转换语法用法

时间:2014-02-27 11:15:46

标签: c# unity3d transform

我正在修改一个简单立方体的变换。

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调整位置。但我仍然不明白为什么第二个例子失败了。

任何人都可以在这里解释我哪里出错吗?

2 个答案:

答案 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);

参考文献: