当我尝试在 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 的场景。
您不太可能在输入触发器的同一帧中按 E,而是使用 OnTriggerStay。 OnTriggerEnter 仅在碰撞体进入触发区域时调用一次。玩家在触发器内的每一帧都会调用 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");
}
}
}