介绍
Vector3.MoveTowards
是 Unity 引擎中的一个方法,用于在当前位置和目标位置之间移动。该方法返回一个新的向量,表示从当前位置到目标位置的移动。
方法
public static Vector3 MoveTowards(Vector3 current, Vector3 target, float maxDistanceDelta);
current
:当前位置。target
:目标位置。maxDistanceDelta
:最大移动距离。该参数表示当前位置和目标位置之间的最大距离差,超过该距离将不再移动。该参数通常使用正值。
举例子
以下是一些常见的使用示例:
示例 1:平滑移动物体
public class MyMover : MonoBehaviour
{
public Transform target;
public float speed = 1.0f;
private void Update()
{
transform.position = Vector3.MoveTowards(transform.position, target.position, speed * Time.deltaTime);
}
}
在此示例中,MyMover
脚本将物体从当前位置移动到目标位置。在 Update
方法中,使用 Vector3.MoveTowards
方法将物体从当前位置向目标位置进行平滑移动。其中,transform.position
表示当前物体的位置,target.position
表示目标位置,speed
表示移动速度,Time.deltaTime
表示上一帧到当前帧的时间间隔。
示例 2:限制移动距离
public class MyLimitedMover : MonoBehaviour
{
public Transform target;
public float speed = 1.0f;
public float maxDistance = 10.0f;
private void Update()
{
if (Vector3.Distance(transform.position, target.position) > maxDistance)
{
transform.position = Vector3.MoveTowards(transform.position, target.position, speed * Time.deltaTime);
}
}
}
在此示例中,MyLimitedMover
脚本将物体从当前位置移动到目标位置,但限制了移动距离。在 Update
方法中,首先通过 Vector3.Distance
方法计算当前位置和目标位置之间的距离,如果该距离超过了 maxDistance
参数,则调用 Vector3.MoveTowards
方法进行移动。这样可以限制物体的移动范围。
示例 3:沿指定方向移动
public class MyDirectionalMover : MonoBehaviour
{
public Vector3 direction = Vector3.forward;
public float speed = 1.0f;
private void Update()
{
transform.position += direction * speed * Time.deltaTime;
}
}
在此示例中,MyDirectionalMover
脚本将物体沿着指定方向进行移动。在 Update
方法中,使用简单的向量加法将物体沿着 direction
参数指定的方向进行移动。其中,direction
表示移动的方向向量,speed
表示移动速度,Time.deltaTime
表示上一帧到当前帧的时间间隔。需要注意的是,该示例中并未使用 Vector3.MoveTowards
方法,但同样可以实现物体的移动。