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(而不是执行平滑过渡)。

原文地址:https://www.cnblogs.com/unitywyb/p/12763012.html