【发布时间】:2021-04-18 10:12:35
【问题描述】:
class GameScene: SKScene, SKPhysicsContactDelegate {
func didBegin(_ contact: SKPhysicsContact) {
let contactA:SKPhysicsBody = contact.bodyA
let contactB:SKPhysicsBody = contact.bodyB
if contactA.contactTestBitMask == 1 && contactB.contactTestBitMask == 2 {
jumpButtonIsReady = true
print("player landed on ground1")
}
if contactA.contactTestBitMask == 2 && contactB.contactTestBitMask == 1 {
jumpButtonIsReady = true
print("player landed on ground1")
} }
}
我使用场景编辑器将玩家的contactTestBitMask设置为1,将地面设置为2。它们都设置为动态为真。但是联系人没有注册。感谢您的帮助。
【问题讨论】:
-
玩家和地面的 categoryBitMask 是什么? contactTestBitMasks 的值是您要为其测试联系人的 categoryBitMask。
-
他们的 CategoryBitMask 与他们的联系人位掩码 1 和 2 相同。
-
播放器categoryBitMask和它的contactTestBitMask不一样吧?
-
不,它们是一样的。玩家接触和类别位掩码为 1,地面接触和类别位掩码为 2。
-
你需要处理的另一个问题是contactA可以是播放器,contactB可以是地面,而且contactA可以是地面,contactB是播放器。物理检测不保证什么节点是什么接触。目前您只测试一种场景。
标签: ios swift xcode sprite-kit