无法获取 OnCollisionEnter 和 GetKey 来知道我按下了按键

问题描述 投票:0回答:1

当我尝试在 OnCollisionEnter 函数内部使用 if(Input.GetKey(KeyCode.E)) 时,它完全忽略 if 输入部分,并且不运行或用它做任何事情

void OnTriggerEnter(Collider other)
{
    if (other.gameObject.CompareTag("Trigger"))
    {
        canvas.enabled = true; this happens

        if (Input.GetKey(KeyCode.E))
        {
            SceneManager.LoadScene("RVinterior"); this doesnt happen
            Debug.Log("E Pressed"); this doent happen
        }
    }
}

我试着让它到达碰撞的地方,如果我按 e 那么它会加载名为 RVinterior 的场景。

c# unity-game-engine game-engine game-development
1个回答
0
投票

您不太可能在输入触发器的同一帧中按 E,而是使用 OnTriggerStayOnTriggerEnter 仅在碰撞体进入触发区域时调用一次。玩家在触发器内的每一帧都会调用 OnTriggerStay。

正如 RoyM 提到的,您还应该使用 GetButtonDown/GetKeyDown,因为您不希望它被多次触发。

所以代码看起来像这样:

void OnTriggerStay(Collider other)
{
    if (other.gameObject.CompareTag("Trigger"))
    {
        canvas.enabled = true;

        if (Input.GetKeyDown(KeyCode.E))
        {
            SceneManager.LoadScene("RVinterior");
            Debug.Log("E Pressed"); 
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.