【发布时间】:2019-05-30 10:15:18
【问题描述】:
我一直在努力学习scenekit,已经完成了一本书,但只有碰撞检测部分没看懂,也许是最重要的部分。 有类别掩码、合谋掩码和physicsbody?.contactTestBitMask。
我想创建一个简单的游戏来实现这一点,但我卡住了。我不确定我是否明白这一点。
在游戏中,有一个球,收集珍珠,远离岩石和洞。在这种情况下:
类别掩码:
- 球 = 0b0001
- 珍珠 = 0b0010
- 岩石 = 0b0100
- 孔 = 0b1000
physicsBody?.contactTestBitMask:
- 球=珍珠||岩石 // 表示 0b1110
- 珍珠 = 1
- 岩石 = 1
合谋掩码为 1,因为它们都相互碰撞。
我不确定我是否遇到了这个碰撞问题。所以在我开始写代码之前,我想确定一下。在 SCNPhysicsContactDelegate 中,下面的函数解决了当他们相互联系时如何学习:
physicsWorld(_ didBegin contact: _) {
var contactNode:SCNNode!
if contact.nodeA.name == "ball" {
contactNode = contact.nodeB
} else {
contactNode = contact.nodeA
}
if contactNode.physicsBody?.categoryBitMask == 0b0010 {
// mean pearls
// raise score etc
}
if contactNode.physicsBody?.categoryBitMask == 0b0100 || 0b1000{
if contactNode.name == "Rock" { print("You rocked") }
if contactNode.name == "Hole" { print("You need to climb") }
}
}
我已经搜索了 youtube 和堆栈,但只有一种解释。 Stack Link Youtube 视频没有解释这些。 图书示例受版权保护,所以我不能放在这里。
谢谢, 祝你有美好的一天。
【问题讨论】:
标签: swift collision-detection scenekit