public class Bezier : MonoBehaviour {
public Transform[] controlPoints;//物体运动的路径点
public float totalTime = 2f;//物体的运动速度
void Start()
{
this.transform.position = controlPoints[0].position;
}
private void BezierTest()
{
int index = controlPoints.Length;
Vector3[] controls = new Vector3[index];
for (int i = 0; i < index; ++i)
{
controls[i] = controlPoints[i].position;
}
while (index > 1)
{
for (int i = 0; i < index - 1; ++i)
{
controls[i] = Vector3.Lerp(controls[i],controls[i+1],Time.time/totalTime);
}
index--;
}
this.transform.rotation = Quaternion.LookRotation((controls[index - 1] - transform.position).normalized);
Debug.DrawLine(transform.position, controls[index - 1],Color.blue,100);
transform.position = controls[index - 1];
}
void Update()
{
BezierTest();
}
}
public Transform[] controlPoints;//物体运动的路径点
public float totalTime = 2f;//物体的运动速度
void Start()
{
this.transform.position = controlPoints[0].position;
}
private void BezierTest()
{
int index = controlPoints.Length;
Vector3[] controls = new Vector3[index];
for (int i = 0; i < index; ++i)
{
controls[i] = controlPoints[i].position;
}
while (index > 1)
{
for (int i = 0; i < index - 1; ++i)
{
controls[i] = Vector3.Lerp(controls[i],controls[i+1],Time.time/totalTime);
}
index--;
}
this.transform.rotation = Quaternion.LookRotation((controls[index - 1] - transform.position).normalized);
Debug.DrawLine(transform.position, controls[index - 1],Color.blue,100);
transform.position = controls[index - 1];
}
void Update()
{
BezierTest();
}
}