首页 文章

两个动态 SCNNode 不冲突(Scenekit)

提问于
浏览
0

我目前正在 ARKit 中制作 Scenekit 游戏。

我有两个动态 SCNNode,当它们彼此接触时,它们会相互通过。

我已经将每个节点的物理主体的 collisionBitMask 设置为彼此包含,如下所示:

ballNode.physicsBody?.collisionBitMask = BodyType.floor.rawValue |  BodyType.opponent.rawValue

我还将每个节点的物理主体设置为动态的,以便节点受到力和碰撞的影响。

当我调用physicsWorld(_ world: SCNPhysicsWorld, didBegin contact: SCNPhysicsContact)时,它确实正确地注册了两个节点之间存在冲突,但节点继续相互通过。

当我使其中一个节点运动而不是动态时,它会正确地阻塞另一个节点,并且它们不会相互通过。但是当它是运动学的时候,它并没有对我应用它的力量作出反应,所以我想让它保持动态。

是否有可能让两个动态节点相互碰撞而不通过?

1 回答

  • 0

    我认为“physicsShape”不见了,所以宣称为“nil”

    geometryNode.physicsBody = SCNPhysicsBody(type: .Dynamic, shape: nil)
    

    代替:

    let pShape = SCNPhysicsShape(geometry: SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0.0), options: [:])
    boxNode.physicsBody = SCNPhysicsBody(type: .Dynamic, shape: pShape)
    

    我希望有帮助,请发布代码。

    形状创建的替代方法是init(node:options:)

相关问题