public static Vector3 Bezier(List<Vector3> points, float value) {
List<Vector3> step1 = points.ToList();
int temp;
int pastTemp = 0;
for(int i = 1; i < points.Count; i++) {
temp = step1.Count;
for(int j = pastTemp; j < temp-1; j++) {
step1.Add(Vector3.Lerp(step1[j], step1[j+1], value));
}
pastTemp = temp;
}
return step1.Last();
}
(각 포인트의 좌표는 설정된 상태여야함)
points : 사용할 point들이 저장된 List를 인자로 받음.
List의 첫번째 원소에 시작점, 마지막 원소에 마지막 지점을 입력해야 함.
IEnumerator Func() {
...
value = 0.0f; //0 : 시작점 1 : 도착지점
speed = 0.0f; //speed를 조절하면 진행속도가 빨라짐.
while(value < 1.0f) {
object.transform.position = Bezier(vectorsList, value);
value += Time.deltaTime*speed;
yield return new WaitForSeconds(Time.deltaTime);
}
}
while문 또는 Update()에 넣어서 사용함.