如何在Unity 2D中的if语句中检查冲突

问题描述 投票:0回答:1

我有一个从20倒数到0的脚本,然后当它达到0时,布尔值设置为true。我想要的布尔值是在播放器与脚本所在的精灵碰撞时在控制台上写一些东西,但是我只希望这种情况是真的。这是代码:

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(这意味着如果玩家与对象发生碰撞,脚本就不会发生任何事情),并且一旦timeLeft达到0,则应该将canHarvest设置为true,这意味着如果玩家与脚本所在的对象发生冲突,脚本所在的对象将消失。这是行不通的,因为我无法通过if语句检查播放器是否在if语句内碰撞,检查canHarvest是否为true。请帮助!

c# visual-studio unity3d
1个回答
0
投票

您应将OnTriggerEnter2D定义移到Update()方法之外,并且条件检查应在函数内部:

© www.soinside.com 2019 - 2024. All rights reserved.