如何正确检测scenekit与物理中的“碰撞”?

时间:2017-08-26 08:00:04

标签: ios swift 3d scenekit arkit

我有一个目标(SCNTorus箍)我正在拍摄SCNSphere。我需要检测球体何时从一侧穿过圆环,然后从圆环的另一侧出来。

我目前的方法是在physicsBody.collisionBitMask上使用节点SCNNode。使用SCNPhysicsContactDelegate,我能够检测到didEnd等各种回调。

在记录时,我正在查看SCNPhysicsContact的penetrationDistancepenetrationDistance

  

两个物理实体之间的重叠距离,以场景坐标空间为单位。

func physicsWorld(_ world: SCNPhysicsWorld, didEnd contact: SCNPhysicsContact) {
    let maskA = contact.nodeA.physicsBody?.categoryBitMask
    let maskB = contact.nodeB.physicsBody?.categoryBitMask
    let penetrationDistance = contact.penetrationDistance

    if (maskA == CollisionTypeOne) && (maskB == CollisionTypeTwo) {            
        print(penetrationDistance)

    } else if (maskB == CollisionTypeOne) && (maskA == CollisionTypeTwo) {
        print(penetrationDistance)
    }
}

我的期望是我可以将球体的大小/直径与penetrationDistance进行比较。对于一个实际的事件(球越过篮筐),现实是didEnd多次射击。 penetrationDistance似乎太小而无法提供帮助。

如何在SceneKit中正确检测传递“碰撞”事件?

0 个答案:

没有答案