Как определить, что ваш палец контактирует с замаскированным спрайтом

Я должен сказать, что один разработчик сказал, что вы должны создать тело skphysics, чтобы тело функции в точке работало так, если есть какой-то конкретный код для создания тела skphysics этого спрайта? потому что я уже дал альфа-маску в файле sks в части физики. кстати, он также дал мне пример кода, который:

if let _ = physicsworld.body(at : fingerlocation)

но вы знаете, когда я использую этот код в моем touchesmoved Функция это доза не работает только для маскированной части этого спрайта он работает для всего ограничивающего прямоугольника этого спрайта

1 ответ

Если я правильно понимаю, вы хотели бы ограничить физическое тело только текстурой спрайта вместо прямоугольника.

 let texture = SKTexture(imageNamed: "imageNameHere")
    maskedSprite.physicsBody = SKPhysicsBody(texture: texture , size: texture.size)

Если вы просто пытаетесь увидеть, вступил ли он в контакт, вам вообще не нужно физическое тело, вы можете добавить имя к узлу и в touchesBegan проверить узел в точке касания, чтобы увидеть, имеет ли оно то же имя как замаскированный спрайт.

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    for touch in touches {
        let location = touch.location(in: self)

        switch atPoint(location).name {
            case "maskedsprite"?: print("masked sprite touched")
        default: break
        }
    }
}
Другие вопросы по тегам