首页 > 解决方案 > 我需要帮助修复我的密门密码

问题描述

所以我正在统一创建一个游戏,我正在尝试制作一个基于对撞机和输入的开放系统,这是我的代码:

public class SecretDoor : MonoBehaviour
{

    public GameObject secretDoor;

    public bool open;

    private void OnTriggerEnter(Collider other)
    {
        open = true;

        if (Input.GetKeyDown(KeyCode.T))
        {
            secretDoor.SetActive(false);
        }
    }

    private void OnTriggerExit(Collider other)
    {
        open = false;

        secretDoor.SetActive(true);
    }

}

它没有打开或关闭,所以我希望有人可以帮助我。

标签: c#unity3d

解决方案


仅当玩家触摸门时才会检查输入,您可能需要查看OnTriggerStay警告! 我想指出,wiki 还声明此功能并非在每一帧上都运行,这可能会阻碍这种能力。

请注意,仅当其中一个对撞机也附加了刚体时才会发送触发事件。触发事件将被发送到禁用的 MonoBehaviours,以允许启用行为以响应碰撞。

void OnTriggerStay(Collider other)
{
        //check code here
}

这是猜测开放布尔值是否正常工作(您应该检查它是否与您将其设置为公共的一样。

因此,最好的方法可能是使用开放布尔值在更新函数中实现输入检测的最佳方法。

void Update(){
    if(open){
        if (Input.GetKeyDown(KeyCode.T)){
           //Stuff here
        }
    }
}

推荐阅读