用法:从当前位置移动到指定位置
transform.position = Vector3.MoveTowards(transform.position, TargetPosition, speed * Time.deltaTime);
注意不要写成从Start点到End点,否则会徘徊不前
错误用法transform.position = Vector3.MoveTowards(StartPos, EndPos, speed * Time.deltaTime);
- 即使速度极高,也会准确到达指定位置。无需担心超过。
- 到达后便不再继续移动。
- 匀速移动
测试代码
[SerializeField]Vector3 EndPos=new Vector3(0f,2f,0f);
[Range(1f,100f)][SerializeField] float speed = 10f;
Vector3 lastPosition;
float stepDist;
Transform trans;
private void Start()
{
trans = transform;
lastPosition = trans.position;
}
private void Update()
{
trans.position = Vector3.MoveTowards(trans.position, EndPos, speed * Time.deltaTime);
stepDist = Vector3.Distance(trans.position ,lastPosition);
Debug.Log((stepDist/Time.deltaTime).ToString());//看看速度
lastPosition = trans.position;
}