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