Unity C# - OnTriggerEnter被调用但字符控制器对象正在通过

Kay*_*Jin 0 c# unity-game-engine

我有一个播放器对象,它附有一个字符控制器并随键盘输入移动.

我还有一个门对象,我想在角色的碰撞触发器上打开,如果门对象需要键,我希望它只在角色有键时打开.

门上有刚体,对撞机,并且isTrigger打开了.不知怎的,OnTriggerEnter被称为,但玩家通过门,如果玩家有钥匙或者如果needKey是假,则玩家不会通过.我试过了OnTriggerstay,它也是一样的.

这是门脚本

void OnTriggerEnter(Collider other){

        GameObject key = null;
        if(other.gameObject.tag=="Player"){

            if(needKey){

                Debug.Log ("checking!"); //prints fine
                if(troll.gameObject.activeSelf && tc.carryingKey){
                    key = troll.transform.FindChild("key_" + this.gameObject.name).gameObject;

                }

                if(key!=null){
                    Debug.Log(key.name);
                    StartCoroutine(OpenTheDoor());
                    tc.Skill();
                    needKey=false;
                    Destroy(key);
                    key=null;
                }else{
                    //Debug.Log("no key"); //prints fine
                }
            }else{
                StartCoroutine(OpenTheDoor());
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

任何帮助或想法都会很棒!

Cen*_*abi 6

触发器不会阻止移动.您应该取消选中isTrigger框.然后,如果要检查碰撞以打开门或阻止播放器,请使用OnCollisionEnter而不是OnTriggerEnter.