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

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

像这样:

在此输入图像描述

然后检查名称以查看字符前面的区域是否为空,要知道要生成一个平台:

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")
            }

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