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