2015. 9. 21. 15:00

3D에서 오브젝트를 움직일 때는 

글로벌 축(Global Axis, 월드 축(Word Axis))이나 

로컬 축(Local Axis)을 기준으로 움직이게 됩니다.

 

 

1. 글로벌 축(Global Axis, 월드 축(Word Axis))

글로벌 축은 항상 고정된 축입니다.

유니티의 스크린에서 오른쪽 위에 표시되는 방향이 글로벌 축과 같은 방향입니다.

 

글로벌 축을 기준으로 움직이면 오브젝트의 축과 관계없이 글로벌 축의 방향으로만 움직이게 됩니다.

글로벌 축으로 움직이는건 쉽습니다.

그냥 트랜스폼(transform)의 포지션(Position, 혹은 로케이션(Rotation))만 병경하면 됩니다.

 

//z축으로 이동
transform.position = transform.position + new Vector3(0, 0, this.m_fSpeed);

 

 

2. 로컬 축(Local Axis)

로컬 축은 오브젝트를 기준으로 하는 축입니다.

오브젝트가 회전하면 로컬 축도 같이 회전합니다.

 

 

2-1. 로컬 축 기준으로 회전

직접 'transform.rotate'를 수정하면 글로벌 축을 기준으로 오브젝트가 회전하게 됩니다.

 

하지만!

'transform.Rotate(x, y, z)'를 사용하면 로컬 축을 기준으로 회전합니다.

//y축으로 회전
transform.Rotate(0, this.m_fSpeed * 2, 0);

 

 

2-2. 로컬 축 기준으로 이동

로컬 축을 기준으로 움직이려면 'transform'에서 방향 값을 가지고 와서 움직이고 싶은 값만큼 곱하여 이동하면 됩니다.

//z축으로 이동
transform.position += transform.forward * m_fSpeed;

transform.forward : z 축

transform.right : x 축

transform.up : y 축

 

 

 

테스트 해보기

 

 

마무리

알고 보면 별거 아닌데 별로 어렵지 않은데 사용법을 몰라 검색했는데도 자료를 찾기 힘든.....그런 자료였습니다-_-;

참고 : YouTube RAWRZ - Unity3D - Forward axis movement and rotation - Javascript

 

테스트 에셋

ForwardAxis_Assets.zip
다운로드