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

从Spritekit Swift中的节点删除所有物理,swift,sprite-kit,Swift,Sprite Kit,我试图从一个节点中删除所有物理元素,这样它就完全没有物理比例了。我希望它能像我刚刚添加的节点一样,不附加物理实体。我尝试过使用.dynamic属性,我发现这使得它不能对该节点施加任何力,但其他节点仍然可以与它共线 基本上我要做的是从一个节点上移除物理体 我正在使用spritekit和swift,提前谢谢您。假设您有一个名为“character”的节点,它是这样设置的 self.character.physicsBody = SKPhysicsBody(texture: firstFram

我试图从一个节点中删除所有物理元素,这样它就完全没有物理比例了。我希望它能像我刚刚添加的节点一样,不附加物理实体。我尝试过使用
.dynamic
属性,我发现这使得它不能对该节点施加任何力,但其他节点仍然可以与它共线

基本上我要做的是从一个节点上移除物理体


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

假设您有一个名为“character”的节点,它是这样设置的

    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
    }

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

self.physicsBody.categoryBitMask = 0;

这就成功了,这样做之后,我的角色将不会注册任何联系人。

你不能将物理实体设置为零吗?谢谢!!这真的很有帮助!