首頁>Game>source

我想在播放器移到門上時添加一个系統,场景發生了變化,但是如果播放器离開門,我呼叫的功能將禁用该系統.所以我把 OnTriggerEnter2DOnTriggerExit2D 做到這一點.問题是一旦triggerExit布林返迴false,而不是函式。

這就是我的指令碼:

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.tag == "Player")
        {
            finish = true;
            if (finish)
                StartCoroutine(WaitForChangeScene());
        }
    }
    private void OnTriggerExit2D(Collider2D collision)
    {
        if (collision.gameObject.tag == "Player")
        {
            finish = false;
        }
    }
    public IEnumerator WaitForChangeScene()
    {
        yield return new WaitForSeconds(1);
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
    }

最新回復
  • 6月前
    1 #

    您可以取消協程 WaitForChangeSceneOnTriggerExit2D 功能.添加一个變數来儲存協程,然後您可以使用该變數来啟動和停止協程。

    private IEnumerator coroutine;
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.tag == "Player")
        {
            //finish = true;
            coroutine = WaitForChangeScene()
            //if (finish)
                StartCoroutine(coroutine);
        }
    }
    private void OnTriggerExit2D(Collider2D collision)
    {
        if (collision.gameObject.tag == "Player")
        {
            //finish = false;
            StopCoroutine(coroutine);
        }
    }
    public IEnumerator WaitForChangeScene()
    {
        yield return new WaitForSeconds(1);
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
    }
    

    您仅在 OnTriggerExit2D中將finish變數設置為false 但不做任何事情.在 OnTriggerEnter2D 您將其設置為true後立即檢查finish變數,因此它將始终為true。

  • unity:遊戲預覽視窗週圍的邊框
  • c#:Unity-相機垂直移動