본문 바로가기

Unity/다루기

[유니티] 3. 이동시키기

 

본 내용은 필자가 공부한 내용을 정리한 것으로 틀리거나 잘못된 내용이 있을 수 있습니다.

 


오브젝트를 움직이기 위해 트랜스폼의 값을 건드려 움직여보겠습니다.

 

우선, 바닥과 구 하나를 준비했습니다

 

 

Transform.position

구를 움직이게 할 스크립트를 작성해보겠습니다. 

void Update()
    {
        transform.position = new Vector3(1, 1, 1);
    }

이렇게 작성하면 오브젝트가 (1, 1, 1)의 위치로 순간이동합니다.

또, 아래처럼 작성할 수도 있습니다.

void Update()
    {
        transform.position += new Vector3(1, 0, 0);
    }

 

 

위와 같이 순간이동하듯이 움직이는 것을 볼 수 있습니다. (컴퓨터의 성능 탓에 조금 이상하게 나와버렸습니다만)

update함수가 실행될 때마다 x축의 위치가 1, 2, 3, 4... 의 위치로 순간이동합니다.

 

 

Transform.Translate

position은 순간이동을 하기 때문에 실제 이동에는 적합하지 않습니다. 그렇기 때문에 Translate 함수를 사용합니다. 

아래와 같은 방법으로 작성할 수 있습니다.

transform.Translate(0, 0, 1);
transform.Translate(new Vector3(0, 0, 1));

또, 위치를 로컬좌표에서 움직일지, 월드좌표에서 움직일지도 정할 수 있습니다.

로컬좌표에서 움직이고 싶다면 Space.Self 를,
월드좌표에서 움직이고 싶다면 Space.World 를 붙이면 됩니다. 
기본적으로(↑위처럼 선언한다면) 로컬좌표로 설정됩니다.

transform.Translate(new Vector3(0, 0, 1), Space.Self); //혹은 Space.World

 

 

translate를 이용하면 위와 같이 부드럽게 움직이게 할 수 있습니다.

 

 

추가1

https://docs.unity3d.com/kr/530/ScriptReference/Vector3.html

 

Unity - 스크립팅 API: Vector3

이 구조체는 3차원 공간에서의 위치와 벡터를 표현하기 위해 사용됩니다. 또한 공통 벡터 연산을 하기위한 함수를 포함합니다. 함수들은 아래에서 확인할 수 있고, 벡터와 위치를 다루는 데, 다

docs.unity3d.com

 

추가2

https://docs.unity3d.com/ScriptReference/Transform.Translate.html

 

Unity - Scripting API: Transform.Translate

Declaration public void Translate(float x, float y, float z); Declaration public void Translate(float x, float y, float z, Space relativeTo = Space.Self);

docs.unity3d.com