【问题标题】:Object not instantiating, when comparing position in Update()比较 Update() 中的位置时,对象未实例化
【发布时间】:2018-01-27 20:33:30
【问题描述】:

我已将此脚本附加到主摄像机。每当相机位于 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);

   }

}

和模函数有关吗? 谢谢!

【问题讨论】:

    标签: c# unity3d unity5


    【解决方案1】:

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

    Roundfloat 与最近的int 进行比较,然后再将其与0 进行比较。这可以通过Convert.ToInt32Math.Round 来完成。还有其他方法可以做到这一点。

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

    【讨论】:

    • 是的,我刚刚意识到,当我手动将相机位置更改为 2 时,它可以很好地实例化对象。四舍五入的数字有效。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多