我用自己的类扩展SKSpriteNode
以获得更多功能。
但是,如果有什么东西会碰到'此节点和didBeginContact
被称为?
因为contact.bodyA
和contact.bodyB
是physicsBody,而且这是游戏场景。
这是我的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
。我需要' Orange'其中physicsBody
只是其中的一部分。
或者我是否理解错误,这是不可能的,因为physicsBody并不坚持' Orange'虽然它是在那里创造的?
答案 0 :(得分:2)
因此,这是一个如何获得与物理体相关联的节点的示例。
var node = SKSpriteNode(imageNamed: "theimage")
node.physicsBody = SKPhysicsBody(circleOfRadius: 6)
var copy = node.physicsBody
现在,我将获得与copy
var node = copy.node
因此,您所要做的就是在physicsBody上调用属性node
。请注意,node
属性返回SKNode
,而不是SKSpriteNode
。