Unity中的物体移动
(1)
直接改变物体的位置。
例子:transform. position=transform. position+某一三维向量(Vector3)
(2)
public void Translate(Vector3 translation);
物体在对应的坐标系中,向参数的方向移动,每一帧移动参数大小
参数:translation类型为三维向量,指定物体移动的方向和移动的距离,等同物体每一帧移动到物体当前位置+参数
public void Translate(Vector3 translation, Space relativeTo = Space.Self);
参数: relativeTo类型为Space,Space. World使用世界坐标系,Space. Self使用本地坐标系。
public void Translate(Vector3 translation, Transform relativeTo);
相对于某一物体移动,也就说以某一物体的本地坐标系移动
参数:relativeTo类型为Transform
(3)
public static Vector3 MoveTowards(Vector3 current, Vector3 target, float maxDistanceDelta);
当前点移动到目标点,方向为目标点减去当前点,每一次物体移动maxDistanceDelta。
参数:current当前值 target目标值
maxDistanceDelta 每次移动的最大距离
(4)
public static Vector3 Lerp(Vector3 a, Vector3 b, float t);
参数为坐标点,没有方向。
将物体位置作为参a,目标点作为参数b,返回值给物体的位置。每一帧物体的位置改变,直到接近目标点
返回的值等于a+(b-a)* t。 当t = 0时返回a。 当t = 1时返回b。 当t = 0.5时,返回a和b之间的中间点。t在0到1。
(5)
public void MovePosition(Vector3 position);
刚体移动到参数位置。如果刚体的isKinematic设置为false,则其作用类似于transform.position = newPosition(而不是执行平滑过渡)。