DNF LOVE

[Unity기초-6] 사용자 입력에 따른 Player를 이동시켜보자 - ④ Unity의 좌표계 본문

Programming/Unity

[Unity기초-6] 사용자 입력에 따른 Player를 이동시켜보자 - ④ Unity의 좌표계

botho 2019. 7. 20. 21:03
반응형

우선 Object의 움직임을 다루는 것을 알기 전에 게임을 개발하기 위해 우리가 필요한 컴퓨터 사이언스 개념 '컴퓨터 그래픽스'이다.

컴퓨터 그래픽스는 게임 개발의 기초 지식이다. 그래픽스를 통해 모양과 색을 수치로 변화하여 디지털로 나타내는 논리적 표현 방법이다. 확대, 축소, 회전 등의 변환이 가능하고 색의 변경이 쉽고, 3차원 공간에서 자유자재로 이동하면서 다각도에서도 볼 수 있다. 광원의 위치에서 물체 각 면의 밝기를 나타낼 수 있고, 표면의 재질감과 투명감 등 다양하고 섬세한 묘사가 가능하다. 이렇듯 시간과 공간을 자유롭게 조작할 수 있게 한다.

사실 나도 그래픽스를 배우고 있는 학생의 입장이기 때문에 자세한 설명 하기는 내게 어렵지만,

이 Object가 움직이는 것에 대한 Unity의 기준점들은 열심히 설명해보도록 하겠다.

그래픽스에서 중요한 요소 중 하나는 '좌표계'이다.

좌표계란? 공간 내에서 특정한 위치를 나타내기 위한 방식이다.

좌표의 축을 정하는 여러 방식 중, Unity는 왼손 좌표계를 기본으로 한다. 엄지 손가락이 X축, 검지 손가락이 Y축, 중지 손가락이 Z축이다.

왼손 좌표계는 화면을 바라보는 사람에게서 화면을 바라보는 사람에게서 화면 방향으로 Z축이 가리키게 된다. 

유니티의 왼손 좌표계

유니티에서 Object의 기준점은 2가지가 존재한다. 이 각각의 좌표계를 통해 오브젝트의 변형을 적용한다.

Local과 Global 좌표계를 한 눈에 확인할 수 있게 하는 버튼 현재는 Local 좌표계이다.

1. Global - Unity엔진 World 좌표를 기준점을 잡는 것이다. 세상을 중심으로 오브젝트가 어느 위치에 있는지.

Object가 x축으로 45도 회전된 상태일 때 Global 좌표계

월드 좌표계는 

Transform.position()
Transform.rotation()
Transform.lossyScale()

등의 메소드를 통해 각각 위치, 회전, 크기를 스크립트 내에서 접근할 수 있다.

2. Local - 오브젝트에 대한 고유의 좌표이다. 해당 오브젝트 혹은 하나의 오브젝트를 기준으로 어느 위치에 알 수 있도록 하는 좌표계. 상대 좌표계라고도 한다.

Object가 x축으로 45도 회전된 상태일 때 Local 좌표계

로컬 좌표계는 스크립트 내에서

Transform.localPosition()
Transform.localRotation()
Transform.localScale()

등의 메소드들을 통해 접근할 수 있다.

유니티에서는 모든 객체는 월드 좌표계와 로컬 좌표계를 가지고 있다. 

부모 객체와 그런 부모 객체를 따라다니는 자식 객체가 있을때,

이 자식 객체의 움직임을 부모 객체의 local 좌표계를 기준으로 관리하는 것이 편리하기에 Local 좌표계가 쓰인다.

그러나 보통은 월드 좌표계를 기준으로 생각해서 3d Object를 진행하는 것이 좋다.

반응형