충돌 감지에 몇 가지 문제가 있습니다. 나는 콘솔에서 충돌이 감지되는지보고 싶다.SceneKit 문제에서 충돌 감지
노드가 생성되면 콘솔에 어떤 범주의 BitMask가 있는지 알 수 있으므로 아무런 문제가 없어야합니다. CollisionMask와 contactBitMask도 설정됩니다.
그래서 객체는 아무런 문제없이 상호 작용합니다.
마스크를 변경하면 서로 상호 작용하여 상호 작용을 멈 춥니 다. 그래서 마스크가 제대로 설정되었다고 말할 수 있습니다. 내가 헬퍼 구조체로 설정 마스크 :
struct BitMaskCategory: OptionSet {
let rawValue: Int
static let none = BitMaskCategory(rawValue: 0 << 0) // 0
static let box = BitMaskCategory(rawValue: 1 << 0) // 1
static let plane = BitMaskCategory(rawValue: 1 << 1) // 2
}
한 몸이 .dynamic physicsBody 다른입니다은 .static입니다.
내의 ViewController 클래스는 SCNPhysicsContactDelegate에게 프로토콜을 구현하고있는 viewDidLoad 에서 나는 쓰기 :
sceneView.scene.physicsWorld.contactDelegate = self
을 나는 방법을 사용하려고 그 후하지만도 호출되지 않습니다 :
func physicsWorld(_ world: SCNPhysicsWorld, didBegin contact: SCNPhysicsContact) {
if contact.nodeB.physicsBody?.contactTestBitMask == 1 {
print("NodeB has mask = 1")
} else {
print("NodeB has mask != 1")
}
}
후 내가 스크린을 누르고 입방체가오고 비행기 표면에 충돌하는 것을 볼 수는 있지만 접촉 감지는 전혀 없습니다. 위임 방법 physicsWorld (_ world : SCNPhysicsWorld, didBegin contact : SCNPhysicsContact)도 전혀 호출되지 않습니다.
내가 놓친 것?
감사합니다.