[英]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.