【发布时间】:2015-08-02 14:27:44
【问题描述】:
我用自己的类扩展了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。我需要physicsBody 只是其中一部分的“橙色”。
或者我理解错了什么,这是不可能的,因为physicsBody 不坚持“橙色”,尽管它是在那里创建的?
【问题讨论】:
标签: swift skspritenode skphysicsbody