比较 Update() 中的位置时对象未实例化

Object not instantiating, when comparing position in Update()

我将此脚本附加到主摄像头。每当相机位于 y 轴上的特定位置时,我想实例化一个对象。但是对象没有实例化。这是脚本。

public GameObject obj;

private void Update()
{
    if (transform.position.y % 2 == 0) {

    Instantiate(obj, new Vector3(transform.position.x, transform.position.y), Quaternion.identity);

   }

}

跟取模函数有关系吗? 谢谢!

它没有实例化,因为 if (transform.position.y % 2 == 0) { 不是 trueif (transform.position.y % 2 == 0) 未评估为 true 的原因是因为 transform.position.yfloat。当您将 float 除以 2 时,余数可能不是 0.

Roundfloat0 进行比较,然后再将其与 0 进行比较。这可以通过 Convert.ToInt32Math.Round.还有其他方法可以做到这一点。

if (Convert.ToInt32(transform.position.y) % 2 == 0)
{
    //Instantiate
}