이번엔 물체를 목표 지점까지 도달하는 코드를 짜보려고 한다.
이 메커니즘도 Update()함수 내에서 코드를 짜야 한다.
Vector3 target = new Vector3(8, 10f, 0); // 목표 지점
void Update()
{
...
}
이 함수는 오브젝트를 목표지점까지 등속이동을 하면서 이동한다.
Vector3.MoveTowards(현재 위치, 목표 지점, 속도);
매개변수는 총 세개로 이루어져 있으며 각각 현재위치, 목표지점, 속도이다.
transform.position =
Vector3.MoveTowards(transform.position, target, 0.5f);
현재 위치에서 목표 지점(8, 10f, 0)까지 속도 0.5f를 가지고 움직인다.!
이 함수는 오브젝트를 목표지점까지 부드럽게 감속 이동을 하면서 이동한다.
Vector3.SmoothDamp(현재 위치, 목표 지점, 참조 속도, 속도);
매개변수는 현재위치, 목표 지점, 참조 속도, 속도로 이루어지며 참조 속도는 천천히 알아가보려고 한다.
Vector3 velo = Vector3.zero; //참조 속도
transform.position =
Vector3.SmoothDamp(transform.position, target, ref velo, 0.5f);
이 함수는 속도가 반비례한다. 마지막 파라미터의 값이 낮아질수록 속도가 더 빨라진다는 의미
내 컴퓨터에선 처음에 끊기면서 이동하지만...
이 함수는 선형 보간되며 이동한다. SmoothDamp보다 감속 시간이 길다. 속도의 최대값은 1이며 SmoothDamp와는 다르게 비례하여 증가한다.
Vector3.Lerp(현재 위치, 목표 지점, 속도);
매개변수는 총 세개로 이루어져 있으며 각각 현재위치, 목표지점, 속도이다.
transform.position =
Vector3.Lerp(transform.position, target, 0.05f);
이 함수는 선형 보간되며 이동하는데 호를 그리며 이동한다. 형태나 매개변수는 Lerp함수와 같다.
Vector3.Slerp(현재 위치, 목표 지점, 속도);
Lerp는 직선으로 이동하지만 Slerp는 보면 호를 그리며 이동한다.
transform.position =
Vector3.Slerp(transform.position, target, 0.05f);
이 함수는 내가 사용하는데 잘 못해서 그런지 적용이 안되서 좀 더 알아봐야할 것 같다.