Unity(C#) > BezierCurves 일반화 함수

개발 기록 남기기·2022년 6월 28일
0

Unity3D

목록 보기
1/1

베지어곡선 일반화 함수

    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()에 넣어서 사용함.

그 외

  • List를 사용한 이유 : Array는 Add로 계속 크기를 추가할 수 없으니까?
profile
유니티, C# 개발자

0개의 댓글