ARKit球通过Torus孔碰撞检测

时间:2018-07-02 12:03:05

标签: ios scenekit collision arkit

我有一个球节点和一个SCNTorus,我能够将球传递到整个圆环节点。

我添加了碰撞和

我可以使用SCNPhysicsContactDelegate来检测球穿过圆环时的碰撞,但是

public func physicsWorld(_ world: SCNPhysicsWorld, didEnd contact: SCNPhysicsContact)被多次呼唤。

public func physicsWorld(_ world: SCNPhysicsWorld, didEnd contact: SCNPhysicsContact) {
    //        print("Ended collision ")
    print(contact.nodeA.name)
    print(contact.nodeB.name)
    print(world.timeStep)
    print("contact.contactPoint : ",contact.contactPoint)
    print("contact.contactNormal: ",contact.contactNormal)

}

这里是日志

Optional("ball")
Optional("CoreOfTorus")
0.0166666666666667
contact.contactPoint :  SCNVector3(x: -0.46944052, y: 0.732995808, z: -0.102437101)
contact.contactNormal:  SCNVector3(x: 0.599724174, y: -0.597007394, z: -0.532835066)
Optional("ball")
Optional("CoreOfTorus")
0.0166666666666667
contact.contactPoint :  SCNVector3(x: -0.465598524, y: 0.730407655, z: -0.0885346532)
contact.contactNormal:  SCNVector3(x: 0.456919283, y: -0.479364365, z: -0.749289393)
Optional("ball")
Optional("CoreOfTorus")
0.0166666666666667
contact.contactPoint :  SCNVector3(x: -0.450406432, y: 0.740066886, z: -0.112132818)
contact.contactNormal:  SCNVector3(x: 0.20927684, y: -0.901745498, z: -0.378230304)
Optional("ball")
Optional("CoreOfTorus")
0.0166666666666667
contact.contactPoint :  SCNVector3(x: -0.450883865, y: 0.730787694, z: -0.130000055)
contact.contactNormal:  SCNVector3(x: 0.318059504, y: -0.937629461, z: 0.140318558)

看到它被称为4次如何解决?

0 个答案:

没有答案