【发布时间】:2017-03-19 23:14:18
【问题描述】:
我正在尝试为 iPhone 创建一个测试 3D 游戏,但我遇到了物理问题。当汽车和救护车相互接触时,汽车不会消失吗?我以前使用过 SpriteKit,我知道我必须将 PhysicsWorld ContactDelegate 设置为 self,但我不知道如何在 SceneKit 中执行此操作,也许这是问题所在?
代码:
ambulance.physicsBody?.categoryBitMask = PhysicsCategory.ambulance
ambulance.physicsBody?.contactTestBitMask = PhysicsCategory.car
car.physicsBody?.categoryBitMask = PhysicsCategory.car
func physicsWorld(_ world: SCNPhysicsWorld, didBegin contact: SCNPhysicsContact) {
let firstNode = contact.nodeA
let secondNode = contact.nodeB
if(firstNode.physicsBody?.categoryBitMask == PhysicsCategory.ambulance && secondNode.physicsBody?.categoryBitMask == PhysicsCategory.car ||
firstNode.physicsBody?.categoryBitMask == PhysicsCategory.car && secondNode.physicsBody?.categoryBitMask == PhysicsCategory.ambulance){
firstNode.physicsBody?.categoryBitMask = PhysicsCategory.ambulance
secondNode.physicsBody?.categoryBitMask = PhysicsCategory.car
secondNode.removeFromParentNode()
}
}
我希望有人可以帮助我!谢谢!
编辑:我找到了如何将场景的contactDelegate设置为self:
scene.physicsWorld.contactDelegate = self
【问题讨论】:
标签: ios swift physics scenekit