게임 오브젝트 생성과 수정 (유니티 게임 프로그래밍)

이번 시간에는 게임 오브젝트를 생성하고 Scene 창을 이용하는 방법에 대해 알아봅시다.

저번 시간에 Scene 창에 대해 간략하게 설명했었죠? Game 창과는 다르게 실제로 게임 세상을 구성하는 작업을 하는 곳인데요, 모든 기능을 설명드리는 건 기능이 너무 많고 저도 모든 기능을 아는 게 아닙니다. 제가 사용하는 기능만 알지요. 차근차근 블로그 컨텐츠를 진행하면서 사용법을 함께 알아갑시다.

다른 창들도 마찬가지입니다. 컨텐츠를 진행하면서 설명드릴 기능이 있다면 함께 설명하는 식으로 진행할 테니 처음부터 완벽하게 알려고 할 필요가 없습니다. 게임 개발할 때 모두 필요한 것도 아니니 너무 조급해 하지 마세요.

1. 게임 오브젝트 생성


실습을 위해 유니티 에디터를 엽니다. 저는 저번 시간에 생성한 프로젝트를 열었습니다. <그림 1-1> 같은 화면처럼 에디터에서 보이는 창 모습들이 다르다고 당황할 필요 없습니다.

우선 게임 오브젝트를 생성해 보죠.

그림 1-1 큐브 오브젝트 생성

<1> Hierachy 창에서 ‘오른쪽 마우스 클릭’ <2> ‘3D Object -> Cube’를 선택합니다.

그림 1-2 Cube 오브젝트

Cube가 생성되었습니다. Scene 창에서 생성된 큐브를 클릭해 보세요. 선택된 오브젝트는 테두리(주황색)가 생기며 선택되었다는 표시가 나옵니다.

그리고 Inspector 창을 보세요. 선택한 게임 오브젝트(Cube)에 연결되어 있는 컴포넌트(Component)들이 보입니다. Transform, Cube (Mesh Filter), Mesh Renderer, 등 게임 오브젝트를 구성하여 기능을 부여하는 것들을 컴포넌트라고 부릅니다. 모든 게임 오브젝트는 하나 이상의 컴포넌트를 가지고 있답니다.

지금은 Hierarchy 창에서 유니티에서 지원하는 ‘Cube’를 만들었지만 나중에는 저희가 직접 그린 그림을 게임 오브젝트로 사용할 것입니다. 외부에서 만든 파일도 게임 오브젝트가 될 수 있으니 걱정하지 않아도 됩니다.

2. Scene 창 둘러보기


그림 2-1 Scene 뷰 Rotation 잠금

Scene 창을 둘러보기 전에 오른쪽 위 구석에 있는 자물쇠를 눌러 회전(rotation) 잠금을 풀어줍시다. 희미하지만 자세히 보면 있답니다!

그림 2-2 Scene의 2D view 버튼

그리고 2D 버튼이 클릭 안 돼있는 상태여야 합니다. 2D 버튼 클릭되어 있다면 3D 게임 세상이더라도 Scene 창에서 2D처럼 보이기 때문에 실습에 차질이 생겨요.

그러면 마우스로 간단하게 Scene 창을 조종하는 방법을 알려드리겠습니다. 직접 해보세요!

  • 마우스 휠로 Scene 카메라를 확대, 축소할 수 있습니다.
  • 오른쪽 마우스 클릭을 유지하고 돌리면 Scene 카메라를 회전할 수 있습니다.
  • 마우스 휠 버튼 클릭을 유지하고 이동하면 Scene 카메라를 이동할 수 있습니다. 다만 방향은 그대로입니다.

Scene 창에서 게임 오브젝트를 수정할 수도 있습니다.

그림 2-3 Scene 에서 사용하는 트랜스폼 툴

위에 있는 빠른 도구를 이용하면 된답니다. 차례대로 설명하자면,

  • Hand Tool : 마우스 휠 버튼과 동일한 기능입니다. Scene 카메라를 이동할 수 있습니다.
  • Move Tool : 선택한 오브젝트의 위치(Position)을 이동할 수 있습니다.
  • Rotate Tool : 선택한 오브젝트의 회전(Rotation)시킬 수 있습니다.
  • Scale Tool : 선택한 오브젝트의 크기(Scale)를 바꿀 수 있습니다.
  • Rect Tool : 직사각형 틀을 통해 선택한 오브젝트의 크기와 회전을 바꿀 수 있습니다.
  • Move, Rotate or Scale selected objects : 위치, 회전, 크기를 한 도구로 바꿀 수 있습니다.

빠른 도구에서 많은 기능을 지원하지만 저는 안 쓰는 편입니다. 보통은 Inspector 창에서 수정하죠.

3. 게임 오브젝트 Transform 수정


<1. 게임 오브젝트 생성>에서 컴포넌트에 대해 간략하게 설명하였는데요, 그 중에서 Transform은 오브젝트의 위치, 회전과 크기를 담당합니다. 물론 수정할 수도 있습니다. Scene 창에서 눈대중으로 수정하는 것보다 정확하게 배치할 수 있습니다.

그렇다면 ‘Cube’ 게임 오브젝트가 가지고 있는 컴포넌트 중에 Transform을 보도록 할까요?

그림 3-1 Cube 오브젝트의 Transform

Position(위치), Rotation(회전), Scale(크기)이 보이는군요. 그리고 축을 의미하는 X, Y, Z의 값이 보입니다.

어렵게 생각할 필요 없이 직접 해봅시다. 우선 비교를 위해 3D 오브젝트 큐브를 추가하고 Transform에서 Position의 값을 (X=0, Y=0, Z=0)으로 바꿔주세요.

Cube 오브젝트 한 개의 Position의 값을 (X=4, Y=0, Z=0)으로 바꿔보세요. 다른 큐브와 X축 기준으로 4만큼 떨어져 있나요?

Position(4, 0, 0)인 오브젝트의 Rotation을 바꿔봅시다. (X=60, Y=60, Z=60)으로 바꿔보세요. 큐브가 어떻게 회전했나요?

이제 크기를 바꿔보죠. (X=2, Y=2, Z=2)으로 바꿔보세요. 다른 큐브보다 커 보이나요?

그림 3-2 수정한 Cube

이처럼 Transform에서도 오브젝트를 수정할 수 있습니다. 제가 모든 게임 오브젝트는 하나 이상의 컴포넌트를 가지고 있다고 했었죠? 바로 그 컴포넌트가 Transform 컴포넌트입니다. Transform을 제거하거나, 없는 게임 오브젝트를 생성하는 것은 불가능하죠.

사실 트랜스폼(Transform)은 위치, 회전, 크기 말고도 담당하는 기능이 하나 더 있습니다. 바로 부모-자식 상태를 저장하는 기능도 있답니다. 지금은 부모-자식에 관해 설명하지 않겠습니다. 나중에 필요할 때 설명해 드리도록 하죠.

다음 시간에는 무엇을 배우나요?


이번 시간에는 Cube를 간단하게 수정하는 방법에 대해 알아보았습니다.

진짜 게임 개발은 언제 배우냐고요? 게임 엔진을 다루기 위해선 알아야 되는 지식이 많답니다. 아직은 유니티에 대해 더 알아야 돼요. 그렇다고 화 내진 마세요. 유니티 같은 게임 엔진이 없었다면 사소한 것 하나하나 모두 여러분이 구현해야 하니까요. 정말 고마운 존재이지요.

다음 시간에는 유니티로 생성한 프로젝트 폴더 구조와 애셋에 관해 알아봅시다. 다음 시간에 만나요~ 제발~

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다