比较 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) {
不是 true
。 if (transform.position.y % 2 == 0)
未评估为 true 的原因是因为 transform.position.y
是 float
。当您将 float
除以 2 时,余数可能不是 0
.
Round 将 float
与 0
进行比较,然后再将其与 0
进行比较。这可以通过 Convert.ToInt32
或 Math.Round
.还有其他方法可以做到这一点。
if (Convert.ToInt32(transform.position.y) % 2 == 0)
{
//Instantiate
}
我将此脚本附加到主摄像头。每当相机位于 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) {
不是 true
。 if (transform.position.y % 2 == 0)
未评估为 true 的原因是因为 transform.position.y
是 float
。当您将 float
除以 2 时,余数可能不是 0
.
Round 将 float
与 0
进行比较,然后再将其与 0
进行比较。这可以通过 Convert.ToInt32
或 Math.Round
.还有其他方法可以做到这一点。
if (Convert.ToInt32(transform.position.y) % 2 == 0)
{
//Instantiate
}