从Spritekit Swift中的节点中删除所有物理

时间:2015-06-24 00:57:21

标签: swift sprite-kit

我试图从节点中删除所有物理,因此它根本没有物理比例。如果我刚刚添加了节点而没有附加物理主体,我希望它能起作用。我已经尝试使用.dynamic属性,我发现这使得它不会对该节点施加任何强制,但其他节点仍然可以与之对齐。

基本上我要做的是从节点中删除物理主体。

我正在使用spritekit和swift,提前谢谢你。

2 个答案:

答案 0 :(得分:2)

假设您有一个名为'字符'的节点。这就是这样设置的。

    self.character.physicsBody = SKPhysicsBody(texture: firstFrame, size: characterSize)
    self.character.physicsBody?.affectedByGravity = true
    self.character.physicsBody?.affectedByGravity = true
    self.character.physicsBody?.allowsRotation = false

您可以将节点的physicsBody更改为:

    self.character.physicsBody = nil

所有上述物理将被删除。您也可以像在问题中所说的那样更改physicsBody的一个或两个属性。例如,您可以更改碰撞类别以防止对象发生碰撞(如果这是您想要的情况)。

    self.character.physicsBody?.categoryBitMask = colliderType.None.rawValue

如果您尝试这样做,请确保您没有'没有'类别设置。这可以这样做。

    enum colliderType:UInt32 {
        case Character = 1
        case Block = 2
        case Wave = 3
        case None = 4
    }

答案 1 :(得分:0)

我做的是:我将角色的categoryBitMask更改为0:

self.physicsBody.categoryBitMask = 0;

这就是诀窍,在这之后,我的角色不会注册任何联系。