DOTY

[Unity] 3. Moving 본문

Unity

[Unity] 3. Moving

증식세포 2022. 7. 30. 17:31
728x90
반응형

Transform

모든 오브젝트들은 각각의 Transform을 가지고 있음. ( 1:1 관계 )

따라서 유니티에서는 Transform을 만들어둠. ☞ 이미 초기화가 된 transform 변수가 포함되어있음.

 

사용 방법

Vector3 vec = new Vector3(0, 0, 0)
translate = Translate(vec);

void Start()에 담을 경우 초기화가 되며 움직일 경우 다시 vec의 값으로 자동 이동되지 않는다.

Vector3 mov_vec = new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0);
transform = Translate(mov_vec);

void Update()에 담을 경우 오브젝트가 움직이는 것을 구현할 수 있다.

☞ X와 Y에 그냥 일반 실수를 넣게 되면 그 값으로 등속도 운동을 하는 듯 하다.

Input.GetAxis는 가중치를 받기 때문에 자연스러운 이동이 가능하다. (Float) ☞ 실수를 곱하여 물체 속도도 조절할 수 있다

X축의 경우 좌 / 우의 방향을 결정하므로 Horizontal | Y축의 경우 상 / 하의 방향을 결정하므로 Vertical 로 설정.

☞ 가중치는 -1.0f ~ 1.0f

키보드의 입력에 따라 가중치가 달라진다.

 

Move to Goal

MoveTowards

일정한 속도로 이동

Vector3 target = new Vector3(4.09f, 0, 0);

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

MoveToward([현재위치], [목표위치], [속도]) 3개의 매개변수를 받는다. 

 

SmoothDamp

목적지까지 감속운동으로 이동

5번째 매개변수를 넣었다.

Vector3 velo = Vector3.zero;
Vector3 target = new Vector3(4.09f, 0, 0);

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

SmoothDamp([현재위치], [목표위치], [참조 속도], [속도]) 4개의 매개변수를 받는다.

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

∴최대 속도를 조절하고 싶은 경우에는 5번째 매개변수에 넣으면 된다.

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

 

Lerp

선형 보간으로 이동

Vector3 target = new Vector3(10f, 0, 0);

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

Lerp([현재위치], [목표위치], [속도]) 3개의 매개변수를 받는다.

속도의 경우 최대 1.0f 까지 가능하다.

∴ SmoothDamp와 비교하면 감속되는 시간이 더 길다.

 

Slerp

구면 선형 보간으로 이동

나는 위로 원을 그리면서 이동하는걸 상상했는데....

 Vector3 target = new Vector3(10, 0, 0);

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

Slerp([현재위치], [목표위치], [속도]) 3개의 매개변수를 받는다.

Lerp와 비슷하지만 곡선을 그리며 이동하는 것이 특징이다. 

 

∴ 곡선 이동하는 방향을 바꾸고 싶으면 Bezier를 사용해야한다고 한다..

728x90
반응형

'Unity' 카테고리의 다른 글

[Unity] 6. Scene 변경 ( + DontDestroyOnLoad )  (0) 2022.09.07
[Unity] 5. OnTriggerEnter(Exit)2D  (0) 2022.09.05
[Unity] 4. Tilemap  (0) 2022.09.03
[Unity] 2. Input  (0) 2022.07.28
[Unity] 1. Unity Script 흐름  (0) 2022.07.28
Comments