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