출처는 아래입니다.
https://artiper.tistory.com/110
선형 보간
a,b값이 주어졌을 때 그 사이에 위치한 값을 추정하기 위하여 직선 거리에 따라 선형적으로 계산하는 방법.
선형 보간
끝점의 값이 주어졌을때
그 사이에 위치한 값을 추정하기 위하여 직선 거리에 따라 선형적으로 계산하는 방법.
유니티에서 선형보간 함수를 사용할때 파라메터
Vector3.Lerp( a,b,t )
a : 일차 함수의 시작 값
b : 일차 함수의 끝 값
t : 얻고 싶은 값의 위치
(비율로 나타냄. 일차 함수의 중간 값을 얻고 싶으면 파라메터에 0.5)
공식 문서에서 확인 하는 함수 형태
public static Vector3 Lerp(Vector3 a,Vector3 b,float t);
a : 시작 값 t =0일때 반환됩니다.
b : 끝 값, t =1일때 반환됩니다.
t : a와 b사이를 보간될 때 사용되는 값.
Vector3.Lerp( a,b,Time.deltatime )
Vector2.Lerp( a,b,Time.deltatime* 2f )
t값을 조절해줄 수 있고,
a값으로 반환되는 값은 a+(b-a)*t 이며 점진적으로 값이 증가할 것을 예상 할 수 있습니다.
a의 증가폭은 점점 줄어들면서 b 값 까지 도달하게 되는데, 즉 도착위치에 가까워 질 수록 속도가 느려집니다.
두 끝점 사이의 선을 따라 일부 지점을 찾는데 가장 일반적으로 사용 됩니다.
Vector3.MoveToward
public static Vector3 MoveTowards( Vector3 current, Vector3 target, float maxDistanceDelta )
current 점에서 target점으로 직선으로 maxDistanceDelta 만큼 간 값을 리턴한다.
cureent에서 target거리가 maxDistanceDelta보다 작으면 target이 리턴 된다.
maxDistanceDelta에 비례하는 값을 넣으면 시간에 따라 동일한 거리만큼 이동 되므로 이동 속도는 일정하다.
가장 정직하게 일정한 거리 만큼 이동할수 있는 방법이다.
Vector3.Slerp
public static Vector3 Slerp(Vector3 a, Vector3 b, float t);
두 점 사이를 구 형태로 interpolate한다.
파라미터 t는 Lerp와 동일하게 0~1 사이의 값이며 a와 b사이에 interpolate할 비율이다.
Lerp가 a,b를 공간상의 점으로 보고 둘 사이를 직선으로 이어서 t비율 만큼을 이동한 점을 찾는 것이라고 보면,
Slerp는 두 벡터 a,b를 Direction으로 보고 두 Direction 사이의 중간 Direction을 찾는 것이라고 볼 수 있다.
빨간 점 = a
초록 점 = b
파란 점 = Lerp( a,b,0.5 )
하얀 점 = Slerp( a,b, 0.5 )
Vector3.SmoothDamp
public static Vector3 SmoothDamp(Vector3 current, Vector3 target, ref Vector3, float smoothTime,
float maxSpeed = Mathf.Infinity, float deltaTime = Time.deltaTime );
벡터를 목표 지점까지 시간의 흐름에 비례해 점차적으로 부드럽게 이동시킨다.
카메라를 부드럽게 따라가게 하는데 가장 많이 사용된다.
게임 잼 하는 동안 저희 팀원 분이 설명해주신
Lerp s,m,t ( 시작점,끝점,시간 ) 이 너무 이해가 확 되어서
다시한번 확실히 공부 하고자 정리하였습니다. !
'🧩 코딩 > 코드 메모' 카테고리의 다른 글
UI Button / 체크 박스 UI " Toggle " 구현 (0) | 2022.12.02 |
---|---|
unity 배열 []과 리스트 List의 개념 (0) | 2022.12.02 |
Unity Time.timeScale로 게임 내 시간 조절하기 🤸🏻♀️ (0) | 2022.10.30 |
Unity2D 물리 충돌이 되지 않을때 여러가지 해결 방법 (0) | 2022.10.23 |
Unity2D 물리 충돌이 되지 않을때(Trigger,Collider충돌) (2) | 2022.10.11 |