Я продлил SKSpriteNode
с моим собственным классом, чтобы иметь больше функций.Как получить SKSpriteNode от physicalBody?
Но как я могу получить этот расширенный узел, когда что-то «ударяет» по этому узлу и вызывается didBeginContact
?
Потому что contact.bodyA
и contact.bodyB
являются физическими вещами, а родителем этого является игровая сцена.
Это мой подкласс SKSpriteNode:
class Orange: SKSpriteNode {
...
func createPhysicsBody(){
self.physicsBody = SKPhysicsBody(circleOfRadius: self.size.width/2)
self.physicsBody?.dynamic = true
...
}
}
Это мой didBeginContact код:
func didBeginContact(contact: SKPhysicsContact){
switch(contact.bodyA.categoryBitMask + contact.bodyB.categoryBitMask){
case orangeCategory + bulletCategory:
contactOrangeBullet(contact.bodyA, bodyB: contact.bodyB)
break;
default:
break;
}
}
В contactOrangeBullet
просто код, который обрабатывает все, когда этот случай случается. Но мне нужно больше, чем physicsBody
. Мне нужен «Оранжевый», который physicsBody
- это всего лишь часть.
Или я понимаю что-то неправильно, и это невозможно, потому что физикаБоди не придерживается «оранжевого», хотя она была создана там?
Да, это то, что я использую в данный момент. Но этот SKNode ничего не знает о моих функциях и атрибутах класса «Оранжевый». – Jurik
Я делаю это так: http://stackoverflow.com/questions/31812108/how-to-know-which-skspritenode-is-affected-by-collision-detection-in-swift/31922288#31922288 – Jurik