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;
    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM