소소한 나의 하루들

목표지점으로 이동시키기 본문

개발/유니티

목표지점으로 이동시키기

소소한 나의 하루 2024. 1. 18. 16:56

출처: https://youtube.com/playlist?list=PLO-mt5Iu5TeYI4dbYwWP8JqZMC9iuUIW2&feature=shared

 

📚 유니티 기초 강좌

유니티 게임 개발을 배우고 싶은 분들을 위한 기초 강좌

www.youtube.com

목표 지점으로 이동하는 4가지의 벡터 방식을 배워본다.

이 4가지는 모두 Vector3 클래스에서 제공하는 기본 이동 함수이다.

 

1.MoveTowards (단순 등속 이동)

MoveTowards 함수현재위치에서 목표위치로 등속운동을 하는 함수이다.

인자로 (현재위치, 목표위치, 속도)를 넘겨주고 Transform.position에 대입하면 된다.

 

현재 위치와 목표지점의 Vector3를 받고, 시간(또는 속도)를 받는다. 마지막 매개변수에 비례하여 속도가 증가한다. [보통 마지막 매개변수는 속도라고 보면 된다]

*MoveTowards( )함수는 반드시 Update에서 써줘야 한다.


2. SmoothDamp (부드러운 감속 이동)

SmoothDamp 함수는 현재위치에서 목표위치로 부드러운 감속이동을 하는 함수이다.

매개변수는 (현재위치, 목표위치, 참조속도, 속도)이다.

 

스크립트를 적용한 구를 play시켜보면, 엄청 느리고 부드럽게 이동하는 것을 확인할 수 있다.

마지막 매개변수에 반비례하여 속도가 증가한다.

Vector3 velo = Vector3.zero;

ref는 키워드로서 참조 접근인데, 실시간으로 바뀌는 값을 적용 가능하다.

 

실행시키면 Game에서 스크립트가 적용된 구가 위쪽(y축)으로 떠오른다.

Vector3 velo = Vector3.up * 50;

속도를 up(초록색 축: y축)으로 50을 준다.

※이렇게되면, 목표지점이라는 의미가 없기 때문에, .up * 50같은 식으로 코드를 작성하지는 않는다. 따라서 부드럽게 이동시키려면 3번째 매개변수에 zero를 넣어준다.


3.Lerp (선형 보간 이동: 직선 이동)

Lerp 함수는 선형 보간(직선 이동)을 말하며, smoothDamp보다 감속시간이 길다.

받는 매개변수도 MoveToward와 동일하게 (현재위치, 목표위치, 속도)이다.

*마지막 매개변수 ‘속도’에 비례하여 속도가 증가하는데, 최대값은 1이다.

 

실행시키면 부드럽게 감속하며 목표지점으로 이동한다.


4.Slerp (구면 선형 보간 이동: 포물선 이동)

Slerp 함수는 구면 선형 보간을 의미하는데, 호를 그리며 이동(포물선 이동)한다.

매개함수는 lerp와 동일하게 (현재위치, 목표위치, 속도)이다.

 

이렇게 목표지점으로 이동시키는 방법에는 4가지가 있는데, 상황에 따라 입맛에 맞는 방법을 선택해서 사용하면 된다.

Comments