通过Transform.Translate移动物体
6个重载:
public void Translate(float x, float y, float z, [DefaultValue("Space.Self")] Space relativeTo);
public void Translate(float x, float y, float z);
public void Translate(Vector3 translation, [DefaultValue("Space.Self")] Space relativeTo);
public void Translate(Vector3 translation);
public void Translate(float x, float y, float z, Transform relativeTo);
public void Translate(Vector3 translation, Transform relativeTo);
1.相对与自身坐标系移动
void Update()
{
this.transform.Translate(0.01f, 0, 0);//向 x 轴方向分别移动0.01 相对于自身坐标系,下同
//this.transform.Translate(Vector3.right*0.01f);
//this.transform.Translate(new Vector3(0.01f,0,0));
//this.transform.Translate(0.01f, 0, 0, Space.Self);
}

2.相对与世界坐标系移动
void Update()
{
this.transform.Translate(0.01f, 0, 0, Space.World);//向 x 轴方向分别移动0.01 相对于世界坐标系
//this.transform.Translate(Vector3.right*0.01f,Space.World);
//this.transform.Translate(new Vector3(0.01f,0,0),Space.World);
}

3. 相对于其它物体的一个坐标系
void Update()
{
transform.Translate(0, 0.01f, 0, sphere.transform);//向y轴方向移动0.01 相对于sphere的坐标系
//transform.Translate(Vector3.up*0.01f, sphere.transform);
}

关于transform.up与Vector3.up
transform.up(right/forward)会随着物体的旋转发生变化,如当y轴向下(与世界坐标y轴相反)transform.up是(0,-1,0)这个后果是此时用transform.up控制物体的移动物体不会向自身y轴方向移动,反而会向y轴负方向移动,因为此时我们乘的向量是(0,-1,0),一般不用transform.translate(transform.up)控制移动
而vector3.up是严格的(0,1,0)。
posted on
浙公网安备 33010602011771号