私は衝突の検出にいくつか問題があります。コンソールに衝突が検出されたことを確認したい。SceneKitの問題での衝突の検出
ノードが生成されるとき、コンソールにはどのカテゴリのカテゴリマスクがあるのか分かりますので、問題はないはずです。 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)はまったく呼び出されません。
私が見逃していますか?
ありがとうございました!