개체가 따라야 할 직선 세그먼트의 경로를 정의하는 벡터 점 목록이 있습니다. 현재,이 같은 경로를 따라 움직임을 애니메이션하기 위해 선형 보간을 수행합니다일정한 속도로 직선 세그먼트의 경로를 따라 이동
public class Demo
{
public float speed = 1;
private List<Vector3> points;
private float t; // [0..1]
private Vector3 Evaluate(float t)
{
// Find out in between which points we currently are
int lastPointIndex = GetLast(t);
int nextPointIndex = GetNext(t);
// Obviously, I need to somehow transform parameter t
// to adjust for the individual length of each segment.
float segmentLength = GetLength(lastPointIndex, nextPointIndex);
// But how would I do this?
return Vector3.Lerp(points[lastPointIndex], points[nextPointIndex], t);
}
public void Update()
{
// Curve parameter t moves between 0 and 1 at constant speed.
t = Mathf.PingPong(Time.time * speed, 1);
// Then just get the evaluated position for the curve time, but
// this gives variant speed if points are not evenly spaced.
Vector3 position = Evaluate(t);
SetObjectPosition(position);
}
}
내가, 내가 각 세그먼트의 길이를 고려하여 매개 변수 t을 재조정 할 필요가 일정하게 속도를 달성하기 위해 실현을,하지만 난 것 정확하게 어떻게 찾을 수 없는지.
나는 또한 내가 원하는 속도로 다음 지점으로 이동하여 방향을 바꿀 수 있음을 알고있다. 가까운 거리에 있거나 한 번 이동하면 방향을 바꿀 수있다. 다음 세그먼트,하지만 이것은 실제로 각 세그먼트의 정확한 길이를 알고 정확히 이것을 보간 할 수 있어야 해키처럼 보입니다.