Mathf, Vector2, Vector3, Quaternion, Color
모두 Lerp, Slerp 등의 함수를 가지고 있는데, 뭐가 다른가 궁금해서 찾아보았다.
매개변수에 들어 갈 자료형을 잘 생각해서 골라서 쓰면 된다.
하나의 숫자를 보간 -> Mathf
2개의 숫자를 보간 -> Vector2
3개의 숫자를 보간 -> Vector3 (Position을 보간할 때 주로 사용)
4개의 숫자를 보간 -> Quaternion
색의 보간 -> Color (Lerp 함수만 있다. Slerp는 없음.)
함수들을 알아보자
Lerp
Lerp 중에서 가장 많이 쓰이는(내 기준?) Vector3.Lerp로 설명을 적겠다.
Vector3.Lerp
// t = 0일때 t을 반환합니다. t = 1 일때 to 를 반환합니다. t = 0.5 일때 from 과 to 사이의 중간 지점을 반환합니다.
public static Vector3 Lerp(Vector3 a, Vector3 b, float t);
만약에 코드가 이렇다면 어떻게 될까?
tr.position = Vector3.Lerp(tr.position, destPos, 0f); // tr.position은 출발, destPos는 도착 위치
Lerp 함수는 tr.position, destPos을 0 ~ 1로 만든 뒤, t를 이용해 값을 반환한다.
t가 0이기 때문에, 위의 Lerp 함수는 tr.position을 그대로 반환할 것이다.
그럼 보통은 어떻게 쓸까?
tr.position = Vector3.Lerp(tr.position, destPos, 0.15f); // tr.position은 출발, destPos는 도착 위치
t에 0~1 사이의 낮은 값을 줘서 tr.position, destPos를 조금씩 움직인다.
실제 사용 예시)
ex) tr.position은 Vector3(0,0,0) 이고, destPos는 Vector3(0,0,100) 이라 치자.
첫번째 실행하면,
0 ~ 100의 차이를 0~1로 바꾼 뒤, 0.2에 해당하는 Vector3을 반환함.
tr.position = Vector3.Lerp(tr.position, destPos, 0.2f); // 반환 값 Vector3(0, 0, 20)
두번째 실행하면,
20 ~ 100의 차이를 0~1로 바꾼 뒤, 0.2에 해당하는 Vector3을 반환함.
tr.position = Vector3.Lerp(tr.position, destPos, 0.2f); // 반환 값 Vector3(0, 0, 36)
이렇게 보간하면, 부드럽게 Position을 이동할 때 유용하게 쓰일 수 있다.
'기타 > Unity' 카테고리의 다른 글
[Unity Lens Flare] 렌즈 플레어 효과 만들기 (0) | 2019.11.07 |
---|---|
[Unity Editor] 파티클 시스템 크기 줄이기 (커스텀 에디터 제작) (0) | 2019.10.29 |
[Unity LWRP] Game 뷰에서 색이 연해지는 현상 (0) | 2019.07.15 |
[Unity Shader] Outline 외곽선 쉐이더 만들기 (3) | 2019.07.14 |
[Unity Error] 안드로이드 빌드 시 Package Name has not been set up correctly (2) | 2019.07.11 |