如何通过physicsBody获取SKSpriteNode?

时间:2015-08-02 14:27:44

标签: swift skspritenode skphysicsbody

我用自己的类扩展SKSpriteNode以获得更多功能。

但是,如果有什么东西会碰到'此节点和didBeginContact被称为?

因为contact.bodyAcontact.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'虽然它是在那里创造的?

1 个答案:

答案 0 :(得分:2)

因此,这是一个如何获得与物理体相关联的节点的示例。

var node = SKSpriteNode(imageNamed: "theimage")

node.physicsBody = SKPhysicsBody(circleOfRadius: 6)

var copy = node.physicsBody

现在,我将获得与copy

相关联的SKNode
var node = copy.node

因此,您所要做的就是在physicsBody上调用属性node。请注意,node属性返回SKNode,而不是SKSpriteNode