unity触发器碰撞调用OnTriggerStay()检查按键多次执行的问题

OnTriggerStay被随机调用,永远不要检查其内部的Input。

在OnTriggerEnter和OnTriggerExit函数中设置为true和false的标志,然后检查该标志并输入Update函数(每帧)。

private void Update()
{
    if (Input.GetKeyDown(KeyCode.E) && triggerStay)
    {
        //
    }
}

bool triggerStay = false;

void OnTriggerEnter2D(Collider2D collision)
{
    Debug.Log("Entered");
    if (collision.gameObject.CompareTag("InteractiveArea"))
    {
        triggerStay = true;
    }
}

void OnTriggerExit2D(Collider2D collision)
{
    Debug.Log("Exited");
    if (collision.gameObject.CompareTag("InteractiveArea"))
    {
        triggerStay = false;
    }
}
原文地址:https://www.cnblogs.com/codeit/p/15478695.html