정보공간_1

[2기 대구 김길종] Unity3D 기초 (2) 본문

IT 놀이터/Elite Member Tech & Talk

[2기 대구 김길종] Unity3D 기초 (2)

알 수 없는 사용자 2012. 10. 21. 18:08

Unity3D 기초 (2)

저번 글에서는 유니티 툴의 간단한 인터페이스에 대해 알아봤는데요

인터페이스에 관한 더 자세한 것들은 공식 홈페이지에 나와 있으니 참고하시길 바랍니다

이번에는 씬 빌딩의 기초인 게임 오브젝트와 컴포넌트에 대하여 알아보도록 하겠습니다

GameObjects

게임 오브젝트는 유니티의 씬을 구성하는 가장 기본적이고 중요한 객체라고 할 수 있습니다. 모든 것은 이 게임 오브젝트에서 시작하여 게임 오브젝트로 끝나게 됩니다.

게임 오브젝트란?

유니티 씬에 나타나는 모든 객체는 게임 오브젝트 입니다. 단 게임 오브젝트 그 자체 만으로는 아무런 의미가 없습니다. 일종의 빈 상자라고 할 수 있는데요. 게임 오브젝트를 특별하게 만들기 위해서는 컴포넌트라(Component)는 것이 필요합니다. 자신이 어떤 종류의 객체를 만들고자 한다면 그에 맞는 컴포넌트를 게임 오브젝트에 붙여서 만들어내는 것입니다. 그래서 게임 오브젝트를 제대로 이해하려면 그것을 구성하고 있는 / 할 수 있는 컴포넌트들에 관해 자세히 알아야 합니다. 예를 들어 자동차의 바퀴를 만든다면 빈 게임 오브젝트 안에 바퀴모양의 Mesh를 넣고 Collider를 넣어야 하는데 Mesh 와 Collider가 뭔지 모르면 바퀴를 만들 수 가 없게 되는 것이죠. '게임 오브젝트 = 컴포넌트들의 조합'으로 보시면 되겠습니다. 그러한 컴포넌트는 이미 있는 것을 가져다 쓸 수도 있지만 스크립트와 같이 직접 만들어낼 수도 있습니다.

GameObject & Component

이제 게임 오브젝트의 가장 중요한 / 흔한 컴포넌트인 Transform을 보면서 GameObject와 Component의 관계를 살펴보겠습니다. 먼저 유니티 창에서 게임 오브젝트를 만들어 봅시다. 아무 씬이나 들어가서 상단 메뉴의 GameObject를 누르고 Creat Empty를 선택하게 되면 아래와 같이 빈 게임 오브젝트가 하나 생성됩니다.

오른쪽의 인스펙터를 보면 오브젝트의 이름, 태그, 레이어가 있고 그 아래에 Transform이라는 것이 있습니다. Transform 위쪽 부분은 게임 오브젝트의 단순 속성이고 Transform은 컴포넌트 입니다. 이 Transform 없이 게임 오브젝트는 존재할 수 없는데요. 그도 그럴것이 오브젝트의 위치정보, 회전, 크기등 가장 기본적인 요소를 정의하고 있기 때문입니다. 이 Transform 컴포넌트를 사용함으로써 게임 오브젝트의 Transform 속성을 활성화하는 것입니다.

Transform 컴포넌트는 부모 자식 관계 설정(Parenting)을 가능하게 하는데 게임 오브젝트를 구성함에 있어서 아주 중요합니다. 자동차를 만든다면 자동차 라는 게임 오브젝트가 있고 그 자식으로 몸체, 바퀴 등을 가지는 구조를 생각해 볼 수 있습니다.

Transform 컴포넌트는 위에서 설명한 것처럼 필수 요소이기 때문에 모든 게임 오브젝트가 기본적으로 하나씩 가지고 있습니다. 빈 게임 오브젝트를 생성하면 자동으로 Transform 컴포넌트가 붙어서 나오게 되죠. 게임 오브젝트는 이러한 Transform 컴포넌트 말고도 다양한 컴포넌트들을 가질 수 있는데요. 씬을 처음 생성하면 만들어져있는 Main Camera 라는 게임 오브젝트를 한번 들여다 보겠습니다.

Main Camera의 인스펙터를 보면 Transform 외에도 다양한 컴포넌트들이 있습니다. 위와 같은 컴포넌트들이 있음으로써 게임 그래픽이 렌더링 되어 게임 화면을 볼 수 있는 것입니다. 물론 여기에 다른 컴포넌트들을 얼마든지 추가할 수 있습니다.

Using Components

사용자는 게임 오브젝트에 컴포넌트를 추가 / 삭제하고 그 속성들을 간단하게는 인스펙터 창을 통해 수정할 수 있습니다. 먼저 컴포넌트를 추가해보도록 하겠습니다.

빈 게임 오브젝트를 클릭하면 오른쪽에 관련된 인스펙터 창이 나오는데요. 물리엔진의 사용을 위해 Rigidbody라는 컴포넌트를 추가해보도록 하겠습니다. Rigidbody는 상단 메뉴창의 Component -> Physics -> Rigidbody를 통해 추가 가능합니다. 게임 오브젝트의 인스펙터를 띄워둔 채로 컴포넌트를 클릭하면 추가가 됩니다.

위의 인스펙터 창을 보면 기본적인 컴포넌트인 Transform 아래에 Rigidbody가 추가된 것이 보입니다.

다양한 속성들이 보이는데 바로 수정이 가능합니다. 이 상태로 플레이버튼을 눌러보면 Transform의

Position 중에서 y 값이 계속 감소하는것을 보실 수 있습니다. Use Gravity로 중력이 적용되며 게임 오

브젝트가 아래로 떨어지는 것입니다. Use Gravity 체크를 해제하면 아래로 떨어지지 않게 됩니다.

Rigidbody는 Collider 라는 컴포넌트와 결합되면 그 역할을 완벽하게 하게 되는데요. Rigidbody는

NVIDIA PhysX 물리 엔진을 통해 Transform을 제어하고 Collider는 Rigidbody가 다른 Collider 들과 충

돌하고 반응하도록 해주게 됩니다. 이러한 컴포넌트들의 조합에는 여러가지가 있습니다.

 

Script

스크립트 또한 게임 오브젝트 안에서 컴포넌트로 관리되는데 어떻게 보면 게임을 만드는데 있어서 가장 중요한 요소가 바로 스크립트 조작능력이라고 할 수 있습니다. 게임 오브젝트를 생성하고 컴포넌트를 추가하는 스크립트를 작성할 수 있다면 게임 실행중에 마음대로 게임 오브젝트를 만들어내고 성질을 바꾸는 것이 가능해지게 됩니다. 또한 스크립트 없이는 불가능한 것들이 많으므로 스크립팅 능력 없이는 유니티를 안다고 할 수 가 없습니다. 스크립트는 게임 오브젝트에 컴포넌트 형태로 추가할 수 있으며, 추가가 되면 플레이 중에 스크립트 내부의 Start와 Update 함수가 지속적으로 call 됩니다.

유니티 내에서는 JavaScript, C#, Boo 세 가지 형식의 스크립트를 작성할 수 있습니다. 한 프로젝트에서 여러 개의 스크립팅 언어들을 같이 사용할 수 있으며 이는 실행에 아무런 문제가 되지 않습니다.

스크립트는 다른 컴포넌트들과는 달리 게임 오브젝트에 바로 추가하는 형식이 아니라 Project 창에 먼저 만들어줘야 합니다. Project 창에서 마우스 오른쪽 버튼을 클릭하여 Create->언어선택 으로 만들 수 있습니다. 만들어진 스크립트를 더블 클릭하면 스크립트의 수정이 가능합니다. 스크립트의 기본 에디터는 Unity3D에 내장된 MonoDevelop 인데 Unity->Preferences->External Script editor 메뉴를 통해 Visual Studio 등 다른 에디터로 변경이 가능합니다.

 

 

Reference

http://korea.unity3d.com/ - 유니티 코리아 (유니티 공식 문서)