簡體   English   中英

如何在 Unity 2D 中的 if 語句中檢查碰撞

[英]How to check for collision in an if statement in Unity 2D

我有一個從 20 倒計時到 0 的腳本,然后當它達到 0 時,boolean 設置為 true。 我希望 boolean 做的是當玩家與腳本所在的精靈發生碰撞時在控制台上寫一些東西,但我只希望這發生在它是真的。 這是代碼:

public float timeLeft = 10f;
public bool canHarvest;

public void Start()
{
    canHarvest = false;
}


public void Update()
{
    timeLeft -= Time.deltaTime;



    if (timeLeft < 0)
    {
        Debug.Log("IM READY TO HARVEST");
        canHarvest = true;

    }

    if (canHarvest = true)
    {
        public void OnTriggerEnter2D(Collider2D col)
        {
            if (col.gameObject.tag == "Player")
            {
                Debug.Log("true");
            }
        }
    }



}

}

我希望這段代碼在開始時將 canHarvest 設置為 false(這意味着如果玩家與 object 發生碰撞,則腳本不會發生任何事情),一旦 timeLeft 達到 0,它應該將 canHarvest 設置為 true,這意味着如果播放器與腳本打開的 object 發生碰撞,腳本打開的 object 將消失。 這不起作用,因為我不能讓 if 語句檢查玩家是否在 if 語句中發生碰撞,檢查 canHarvest 是否為真。 請幫忙!

您應該將 OnTriggerEnter2D 定義移到 Update() 方法之外,條件檢查應該在 function 內:

public float timeLeft = 10f;
public bool canHarvest;

public void Start()
{
    canHarvest = false;
}

public void Update()
{
    timeLeft -= Time.deltaTime;

    if (timeLeft < 0)
    {
        Debug.Log("IM READY TO HARVEST");
        canHarvest = true;    
    }      
}

public void OnTriggerEnter2D(Collider2D col)
{
     if (canHarvest && col.gameObject.tag == "Player")
     {
         Debug.Log("true");
     }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM