SceneKit:检查节点是否与任何其他节点没有联系?

时间:2018-03-10 21:13:16

标签: swift swift3 scenekit physics

好的,试着了解如何做到这一点 - 我有一个角色(SCNNode)并且需要确定玩家是否将要移动(向前走),如果没有平台来阻止他(受重力影响的玩家) )。

如果没有,我将在适当的位置产生一个平台。我认为要做的是在物体前面用不同的碰撞掩模制作一个物理体,并检查是否与平台物理实体最终接触 -

像这样:

enter image description here

然后检查名称,看看角色前面的区域是否为空,要知道产生一个平台:

func physicsWorld(_ world: SCNPhysicsWorld, didEnd contact: SCNPhysicsContact) {

        //Platforms
        if contact.nodeA.physicsBody!.categoryBitMask == Bitmask.collision.rawValue {

            if(contact.nodeA.name == bot.frontCollider.name || contact.nodeB.name == bot.frontCollider.name)
            {
                print("Front collide exit")
            }
            contactPlatform(contact.nodeA, touching: false)
        }
        if contact.nodeB.physicsBody!.categoryBitMask == Bitmask.collision.rawValue {

            if(contact.nodeA.name == bot.frontCollider.name || contact.nodeB.name == bot.frontCollider.name)
            {
                print("Front collide exit")
            }

问题是这导致其他碰撞问题/不可靠。我不认为didEnd contact:SCNPhysicsContact)是正确的方法 - 检测在面向前方的角色前面是否存在物理主体的最佳方法是什么?

0 个答案:

没有答案