ARKit Ball Pass через обнаружение столкновения дыры Тора - PullRequest
0 голосов
/ 02 июля 2018

У меня есть один шариковый узел и один 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 раза, как это исправить?

...