在 Sprite 套件中未检测到联系人

Posted

技术标签:

【中文标题】在 Sprite 套件中未检测到联系人【英文标题】:Contact not being detected in Sprite kit 【发布时间】: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是播放器。物理检测不保证什么节点是什么接触。目前您只测试一种场景。 【参考方案1】:

您可能在场景初始化中缺少physicsWorld.contactDelegate = self。仅仅符合SKPhysicsContactDelegate 是不够的。

如果您确认没问题,则通过将视图的 showsPhysics 设置为 true 来检查物理实体是否正确。

【讨论】:

以上是关于在 Sprite 套件中未检测到联系人的主要内容,如果未能解决你的问题,请参考以下文章

如何检测精灵套件中的碰撞?

云套件:如何仅从您的联系人组获取公共数据库订阅通知

精灵套件:联系不工作

是否可以在移动 Safari 中检测邮政地址,以便将其添加到联系人中?

精灵套件联系代表

如何检测更新的android联系人并同步到firestore