首页 文章

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

提问于
浏览
-1

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

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

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

2 回答

  • 2

    我做的是:我将字符的categoryBitMask更改为0:

    self.physicsBody.categoryBitMask = 0;
    

    这样就可以了,在这之后,我的角色不会注册任何联系人 .

  • 0

    假设你有一个名为'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
        }
    

相关问题