?Unity3d物体沿着折线匀速移动,移动过程中物体自动改变朝向。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WayPoints : MonoBehaviour
{
// put the points from unity interface
public Transform[] wayPointList;
public int currentWayPoint = 0;
public float speed = 4f;
Transform targetWayPoint;
// Update is called once per frame
void Update()
{
// check if we have somewere to walk
if (currentWayPoint < this.wayPointList.Length)
{
if (targetWayPoint == null)
targetWayPoint = wayPointList[currentWayPoint];
walk();
}
}
void walk()
{
// rotate towards the target
transform.forward = Vector3.RotateTowards(transform.forward, targetWayPoint.position - transform.position, speed * Time.deltaTime, 0.0f);
// move towards the target
transform.position = Vector3.MoveTowards(transform.position, targetWayPoint.position, speed * Time.deltaTime);
if (transform.position == targetWayPoint.position)
{
currentWayPoint++;
if (currentWayPoint < this.wayPointList.Length)
{
targetWayPoint = wayPointList[currentWayPoint];
}
}
}
}
|