【问题标题】:Two Dynamic SCNNodes Not Colliding (Scenekit)两个动态 SCNNode 不碰撞(Scenekit)
【发布时间】:2018-12-06 15:03:47
【问题描述】:

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

我有两个动态的 SCNNode,当它们相互接触时,它们会相互穿过。

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

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

我还把每个节点的物理体设置成动态的,这样节点就会受到力和碰撞的影响。

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

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

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

【问题讨论】:

    标签: ios swift scenekit arkit scnnode


    【解决方案1】:

    我认为缺少“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:)

    【讨论】:

    猜你喜欢
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 2023-04-09
    • 2019-07-16
    • 2017-04-26
    • 2023-03-25
    • 2018-04-09
    相关资源
    最近更新 更多