Я пытаюсь создать какой-то проект с использованием SCNPhysicsContactDelegate, но обнаружил, что он слишком рано обнаруживает контакт между моими узлами. Мне нужно, чтобы это было на 100% точным и правильным. Прилагаю скриншот слишком раннего обнаружения контакта. Вот мой код для их физических тел:
код узлаA:
nodeA = SCNNode(geometry: SCNBox(width: 0.3, height: 0.3, length: 0.3, chamferRadius: 0.05))
nodeA.position = SCNVector3(0, 3.3, 0)
nodeA.geometry?.firstMaterial?.diffuse.contents = UIColor.red
nodeA.physicsBody = SCNPhysicsBody.dynamic()
nodeA.physicsBody?.physicsShape = SCNPhysicsShape(node: nodeA, options: nil)
nodeA.physicsBody?.categoryBitMask = PhysicsCategories.nodeA
nodeA.physicsBody?.contactTestBitMask = PhysicsCategories.nodeB
nodeA.physicsBody?.isAffectedByGravity = false
nodeA.name = "nodeA"
nodeA.opacity = 0
self.scene.rootNode.addChildNode(self.nodeA)
код nodeB: (nodeB уже существует, поэтому я добавляю только физическое тело)
nodeB.physicsBody = SCNPhysicsBody.kinematic()
nodeB.physicsBody?.physicsShape = SCNPhysicsShape(node: nodeB, options: nil)
nodeB.physicsBody?.categoryBitMask = PhysicsCategories.nodeB
nodeB.physicsBody?.contactTestBitMask = PhysicsCategories.nodeA
Код функции контакта:
func physicsWorld(_ world: SCNPhysicsWorld, didBegin contact: SCNPhysicsContact) {
scene.isPaused = true
}
плохое изображение столкновения
Не могли бы вы помочь мне найти решение? Я с нетерпением жду ваших слушаний, ребята.
Спасибо, Якуб.
var stopIt = false
, затем в функции мира физики, когда запускается контакт, запускается этот код: stopIt = true, а затем в методе didRenderScene:if stopIt{ scene.isPaused = true}
Но после этого результат выглядит все так же. остановился слишком рано - person Jakub   schedule 26.11.2019