我正在修改一个简单立方体的变换。
float gravity = -0.25f;
myCube.transform.position.y -= gravity;
不起作用。错误CS1612:考虑将值存储在临时变量中。
float temp = myCube.transform.position.y;
temp -= gravity;
myCube.transform.position.y = temp;
不起作用。相同错误CS1612:考虑将值存储在临时变量中。
//Create temp gravity vector
Vector3 temp = new Vector3(0.0f, -0.25f, 0f);
myCube.transform.position += temp;
哪个可行,所以这个
private Vector3 cubePos;
float gravity = -0.25f;
cubePos.Set(myCube.transform.position.x, (myCube.transform.position.y - gravity), myCube.transform.position.z);
myCube.transform.position = cubePos;
我理解如何使用向量修改变换(第三个示例)或使用Set调整位置。但我仍然不明白为什么第二个例子失败了。
任何人都可以在这里解释我哪里出错吗?
答案 0 :(得分:2)
“transform.Position.y”是一个只读属性,所以你可以阅读。将位置存储在Vector3中,修改该向量,然后将其设置回位置,例如
Vector3 temp = cubePos.transform.position;
temp.x -= gravity;
temp.y -= gravity;
cubePos.transform.position = temp;
答案 1 :(得分:1)
翻译游戏对象的最简单方法是:
myCube.transform.Translate(0, -gravity, 0);
或者
myCube.localPosition = new Vector3(
myCube.localPosition.x,
myCube.localPosition.y - gravity,
myCube.localPosition.z);
参考文献: