我用自己的类扩展了SKSpriteNode
,以便拥有更多的函数。
但是,当某个“点击”这个节点并调用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;
}
}
in
contactOrangeBullet
只是在这种情况发生时处理所有事情的代码。但我需要的不仅仅是physicsBody
。我需要一个‘橘子’,它只是其中的一部分。或者我是否理解了一些错误,这是不可能的,因为PhysicsBody不坚持“橙色”,尽管它是在那里创建的?
最佳答案
所以,这里有一个例子,说明如何获取与物理体相关联的节点。
var node = SKSpriteNode(imageNamed: "theimage")
node.physicsBody = SKPhysicsBody(circleOfRadius: 6)
var copy = node.physicsBody
现在,我将得到与
copy
相关联的sknodevar node = copy.node
所以,您只需调用physicsbody上的属性
node
。请记住,node
属性返回一个SKNode
,而不是SKSpriteNode
。关于swift - 如何通过physicsBody获取SKSpriteNode?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31772869/