본문 바로가기

취미로 하는 게임코딩_gameCodingAsHobby/유니티 구현 정리_Implement Summary

유니티 각개격파_012_벡터(Vector)와 이동(Translate)_좌표축 이동

이 글에서는 게임오브젝트를 이동시키는 방법을 알아본다.

 

회전에서 사용했던 프로젝트를 그대로 이용한다.

 

현재 Y축 값이 1인 큐브를 바닥에 내려오도록 하자.

Y값을 조정해도 되지만 여기서는 Rigidbody(리지드바디)라고 하는 물리 컴퍼넌트를 큐브에 장착한다.

Inspector창 아래 검색창에서 rig를 입력하면 Rigidbody를 찾을 수 있다.

현재는 3D 프로젝트이므로 2D용인 Rigidbody2D가 아니라 3D용인 Rigidbody를 선택해야 한다.

 

 Rigidbody는 유니티에서 물리 시스템에 사용하는 컴퍼넌트이다.

위 그림에서 보듯이 Mass(질량, 무게), Use Gravity(중력 사용) 등 물리적으로 일어나는 현상을 적용할 수 있다.

다음에 따로 다루기로 하고 일단 위와 같이 기본 상태로 둔다.

 

큐브에 Rigidbody컴퍼넌트를 장착한 후 실행하면 위와 같이 큐브가 바닥에 내려 않는다.

Rigidbody에 중력 사용을 체크했기 때문이다.

 

 

큐브 이동을 위해 새 스크립트를 작성한다.

큐브 Inspector창 아래에서 New script(새 스크립트)를 클릭한다.

 

스크립트명은 MoveCube (큐브를 움직이다)로 정한다.

 

회전에서 만들었던 스크립트 아래로 이동하기 위해서 3점 아이콘을 클릭한 후 Move Up(위로 이동)을 클릭한다.

스크립트 컴퍼넌트를 마우스로 끌어서 이동해도 된다.

 

앞에서 만들었던 Rotate Cube 스크립트는 여기서 실행하지 않으므로 체크를 해제한다.

 

Inspector창에서 스크립트를 만들어서 붙이면 Project창의 Assets폴더에 파일이 만들어진다.

MoveCube 스크립트를 스크립트를 모아놓는 Scripts폴더로 옮긴다.

MoveCube 스크립트를 편집하기 위해 더블클릭한다.

 

 

Move( ) 메서드를 만들고 위와 같이 코드를 입력한다.

그런 후에 Update() 안에 Move( )를 넣어주면 매 프레임 마다 Move( ) 메서드를 실행할 것이다.

 

유니티에서 게임오브젝트를 이동하는 방법 중에서 Translate( ) 메서드를 사용할 수 있다.

이 메서드는 괄호 안에 입력한 벡터값으로 게임오브젝트의 방향과 거리를 변환해서 이동시켜 준다.

다시 말해서 Translate메서드는 물리적인 힘이 필요하지 않는 이동에 사용한다.

 

참고로 큐브의 경우는 물리적인 힘을 사용하여 이동할 수도 있고, 물리를 사용하지 않고 이동할 수도 있는 게임오브젝트이다. 물리를 사용한 이동은 다음에 다루기로 하고 여기서는 물리를 사용하지 않는 이동을 다룬다.

 

먼저 X축 값을 1.0f 로 입력해서 어떻게 이동하는 지 확인해보자.

 

스크립트를 저장하고 유니티에서 실행 버튼을 누른다.

 

 

움직임을 캡쳐하기도 전에 벌써 달아나고 없다.

X축으로 1만큼 움직이게 했는데 Update메서드에 넣었기 때문에 매 프레임당 1만큼 계속 움직이게 된다.

중력 적용으로 바닥에 닿기도 전에 빠르게 이동할 것이다.

 

X축 값을 변수로 대체해보자.

제일 윗부분에 speed(속도)라는 float 타입의 변수를 만들어 1.0f로 설정하고 X축 값의 위치에 숫자 대신 변수를 넣는다.

같은 결과가 나올 것이므로 여기에 속도를 줄이는 코드를 추가해보자.

 

20번 줄에 변수 speed에 0.8f를 곱해서 더하는 코드을 추가한다.

이렇게 하면 매 프레임 마다 speed는 0.8 곱해진 수 만큼 변하게 된다.

speed 값이 20%씩 작아지므로 속도는 줄어들면서 0 에 무한히 가까워질 것이다.

정지한 것은 아니지만 거의 멈춘것과 같다.

 

참고로 대입연산자인 *= 는 이전 글 <유니티10_C#_ 06_토큰>에 설명이 있다.

 

어쨌든 Translate 메서드의 매개변수에 값을 넣으면 해당 값 만큼 위치를 이동하게 된다.

X축, Y축, Z축에 값을 넣어서 이리 저리 테스트 해보자.

 

다음 글에서는 키보드로 큐브를 이동해 본다.

 

끝.

Wraven...