Ios SceneKit问题中的碰撞检测
我对碰撞检测有一些问题。我想在控制台中查看是否检测到碰撞 当生成节点时,我会在控制台中看到它们有什么类型的categoryBitMask,所以肯定没有问题。还设置了碰撞掩码和contactBitMask 因此,对象之间的交互没有问题 如果我换了面具,它们就会停止相互作用,所以它们会互相穿过。所以我可以说面具设置得很好。 使用辅助对象结构设置的遮罩:Ios SceneKit问题中的碰撞检测,ios,swift,collision-detection,scenekit,Ios,Swift,Collision Detection,Scenekit,我对碰撞检测有一些问题。我想在控制台中查看是否检测到碰撞 当生成节点时,我会在控制台中看到它们有什么类型的categoryBitMask,所以肯定没有问题。还设置了碰撞掩码和contactBitMask 因此,对象之间的交互没有问题 如果我换了面具,它们就会停止相互作用,所以它们会互相穿过。所以我可以说面具设置得很好。 使用辅助对象结构设置的遮罩: struct BitMaskCategory: OptionSet { let rawValue: Int static let
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
}
之后,我尝试使用方法,但它甚至没有被调用:
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\uworld:SCNPhysicsWorld,didbegen contact:SCNPhysicsContact甚至根本不被调用
我想念什么
谢谢大家! 经过多小时的调试挑战后,我发现我在设置委托后重写了场景 是: 应该是:
let scene = SCNScene()
sceneView.scene = scene
sceneView.scene.physicsWorld.contactDelegate = self
就我而言,这解决了问题。
希望有人能用这个来节省时间:经过多小时的调试挑战后,我发现我在设置委托后重写了场景 是: 应该是:
let scene = SCNScene()
sceneView.scene = scene
sceneView.scene.physicsWorld.contactDelegate = self
就我而言,这解决了问题。
希望有人能节省时间:
let scene = SCNScene()
sceneView.scene = scene
sceneView.scene.physicsWorld.contactDelegate = self