유니티-기초4

아따맘마·2020년 12월 22일
0

Unity

목록 보기
4/5
post-thumbnail

이번엔 물체를 목표 지점까지 도달하는 코드를 짜보려고 한다.
이 메커니즘도 Update()함수 내에서 코드를 짜야 한다.

Vector3 target = new Vector3(8, 10f, 0); // 목표 지점
void Update()
{
	...
}

MoveTowards()

이 함수는 오브젝트를 목표지점까지 등속이동을 하면서 이동한다.

Vector3.MoveTowards(현재 위치, 목표 지점, 속도);

매개변수는 총 세개로 이루어져 있으며 각각 현재위치, 목표지점, 속도이다.

 transform.position =
            Vector3.MoveTowards(transform.position, target, 0.5f);

현재 위치에서 목표 지점(8, 10f, 0)까지 속도 0.5f를 가지고 움직인다.!

SmoothDamp

이 함수는 오브젝트를 목표지점까지 부드럽게 감속 이동을 하면서 이동한다.

Vector3.SmoothDamp(현재 위치, 목표 지점, 참조 속도, 속도);

매개변수는 현재위치, 목표 지점, 참조 속도, 속도로 이루어지며 참조 속도는 천천히 알아가보려고 한다.

Vector3 velo = Vector3.zero; //참조 속도

transform.position =
	Vector3.SmoothDamp(transform.position, target, ref velo, 0.5f);

이 함수는 속도가 반비례한다. 마지막 파라미터의 값이 낮아질수록 속도가 더 빨라진다는 의미
내 컴퓨터에선 처음에 끊기면서 이동하지만...

Lerp

이 함수는 선형 보간되며 이동한다. SmoothDamp보다 감속 시간이 길다. 속도의 최대값은 1이며 SmoothDamp와는 다르게 비례하여 증가한다.

Vector3.Lerp(현재 위치, 목표 지점, 속도);

매개변수는 총 세개로 이루어져 있으며 각각 현재위치, 목표지점, 속도이다.

transform.position =
	Vector3.Lerp(transform.position, target, 0.05f);

Slerp

이 함수는 선형 보간되며 이동하는데 호를 그리며 이동한다. 형태나 매개변수는 Lerp함수와 같다.

Vector3.Slerp(현재 위치, 목표 지점, 속도);

Lerp는 직선으로 이동하지만 Slerp는 보면 호를 그리며 이동한다.

        transform.position =
            Vector3.Slerp(transform.position, target, 0.05f);


이 함수는 내가 사용하는데 잘 못해서 그런지 적용이 안되서 좀 더 알아봐야할 것 같다.

profile
늦게 출발했지만 꾸준히 달려서 도착지점에 무사히 도달하자

0개의 댓글