본문 바로가기
게임 프로그래밍/게임개발 중급

게임개발 중급(18) - 유니티 엔진 활용(1)

by jyppro 2023. 5. 7.

유니티 엔진 활용(1)

저번 시간을 마지막으로 2D 플랫포머 게임 만들기 챕터를 끝냈습니다. 이번에는 유니티 엔진을 제대로 사용하는 법에 대해서 이야기 하려고 합니다. 유니티 엔진에는 수많은 기능이 탑재되어 있어 전부를 다루지는 못하지만, 가장 많이 쓰이고 유요하게 쓰이는 것들에 대해서 한번 살펴보겠습니다.

 

Transform(트랜스폼)

트랜스폼
트랜스폼

유니티에서 Transform은 게임 오브젝트의 위치, 회전, 크기 정보를 가지고 있는 컴포넌트입니다. 즉, Transform을 이용해서 게임 오브젝트의 위치, 회전, 크기를 변경할 수 있습니다.

Transform은 다음과 같은 속성을 가지고 있습니다.

Position: 게임 오브젝트의 위치를 나타내는 Vector3 값입니다. 이 값을 변경하면 게임 오브젝트가 움직입니다.
Rotation: 게임 오브젝트의 회전을 나타내는 Quaternion 값입니다. 이 값을 변경하면 게임 오브젝트가 회전합니다.
Scale: 게임 오브젝트의 크기를 나타내는 Vector3 값입니다. 이 값을 변경하면 게임 오브젝트의 크기가 변경됩니다.

Transform을 이용하여 게임 오브젝트의 위치, 회전, 크기를 변경할 수 있으며, 게임 오브젝트의 부모-자식 관계를 이용하여 상대적인 위치, 회전, 크기를 변경할 수도 있습니다. 또한, Transform은 게임 오브젝트가 이동하거나 회전할 때마다 이벤트를 발생시키는데, 이를 이용하여 게임 로직을 구현할 수도 있습니다.

 

트랜스폼-툴
트랜스폼 툴

트랜스폼을 다룰 때, 인스펙터 창에서도 할 수 있지만 유니티 왼쪽 상단에 보면 여러가지 종류의 조작 툴이 보입니다. 이 트랜스폼 툴을 사용하여 조작할 수도 있습니다.

순서대로 Hand, Move, Rotate, Scale, Rect, Transform,Editor Tool 이며, 화면이동, 오브젝트 이동, 회전, 크기조절을 할 때 사용됩니다.

 

Rigidbody(리지드 바디)

리지드-바디
리지드 바디

리지드바디(Rigidbody) 컴포넌트는 유니티의 물리 엔진 시스템을 이용하여 게임 오브젝트에 물리적인 힘과 운동을 적용하는 컴포넌트입니다. 이 컴포넌트는 오브젝트의 질량, 속도, 회전력 등을 제어하며, 중력, 마찰력, 충돌 등 물리 법칙에 따른 자연스러운 움직임을 구현할 수 있습니다.

리지드바디 컴포넌트를 사용하면 게임에서 오브젝트 간의 충돌을 처리하거나, 중력에 따른 물체의 운동 등을 구현할 수 있습니다. 이를 이용하여 다양한 게임 오브젝트를 구현할 수 있습니다. 또한, 리지드바디 컴포넌트를 사용하면 물체의 운동량과 에너지 보존 등 물리 법칙에 따라 게임의 현실성을 높일 수 있습니다. 또한, 오브젝트의 회전과 관련하여 회전력, 각속도, 각가속도 등의 값을 제공하므로, 오브젝트의 회전 운동을 구현하는 데도 유용합니다.

 

2D 와 3D의 사용 컴포넌트가 나뉘어져 있으며, 충돌처리를 할 때에는 Collider와 함께 거의 필수로 사용됩니다.

 

Collider(콜라이더)

콜라이더
콜라이더

콜라이더(Collider)는 유니티에서 물리 시뮬레이션을 처리하는 데 사용되는 컴포넌트 중 하나입니다. 오브젝트의 충돌 영역을 정의하고, 다른 오브젝트와 충돌할 때 일어나는 상호작용을 제어할 수 있습니다.

콜라이더는 크게 두 가지 종류로 나뉩니다. 하나는 Mesh Collider로 오브젝트의 모양 그대로 콜라이더를 만들 수 있으며, 다른 하나는 Primitive Collider로 정육면체, 구, 원통 등의 기본 도형으로 콜라이더를 만들 수 있습니다.

 

콜라이더-종류
콜라이더의 다양한 형태

2D가 따로 나뉘어져 있고 다양한 형태에 따라 맞춰서 사용할 수 있도록 되어있습니다.

콜라이더는 다른 오브젝트와 충돌할 때 OnCollisionEnter, OnCollisionStay, OnCollisionExit, OnTriggerEnter, OnTriggerStay, OnTriggerExit 등의 메서드를 호출합니다. 이를 통해 충돌한 오브젝트의 정보를 가져오거나, 충돌 시 일어나는 이벤트를 처리할 수 있습니다.

콜라이더는 물리 시뮬레이션을 위해 반드시 리지드바디(Rigidbody) 컴포넌트와 함께 사용되어야 합니다. 리지드바디 컴포넌트가 없는 오브젝트에 콜라이더를 추가하더라도 충돌은 감지되지만, 물리적인 영향을 받지 않습니다.

 

Main Camera(메인 카메라)

메인-카메라
메인 카메라 인스펙터 창

유니티 메인 카메라는 게임 화면에서 보이는 카메라를 말합니다. 기본적으로 씬에 하나만 존재하며, 게임 오브젝트로 생성하거나 씬 뷰에서 드래그 앤 드롭을 통해 씬에 추가할 수 있습니다.

메인 카메라는 게임 내에서 시점을 제어하며, 주로 플레이어나 NPC, 장면의 전경과 배경 등을 비추기 위해 사용됩니다. 메인 카메라의 위치와 회전은 해당 씬에서 바라보고 싶은 대상에 따라 자동으로 결정되거나, 코드를 통해 수동으로 지정할 수도 있습니다.

또한 메인 카메라는 게임의 화면 비율과 크기를 조절하는 데 사용됩니다. 카메라의 Viewport Rect 속성을 조정하여 게임 화면의 비율을 조절할 수 있으며, 카메라의 Size 속성을 조정하여 게임 화면의 크기를 조절할 수 있습니다. 이렇게 조절한 메인 카메라의 설정은 게임 실행 시 화면에 반영됩니다.

 

프로젝트를 생성하면 자동으로 생성되는 것 중에 하나입니다.

 

<NEXT>

이번에는 유니티에서 자주 사용되고 유용한 것들에 대해 알아보는 시간을 가졌습니다. 하지만, 아직 조금밖에 설명드리지 못해서 다음에도 이어서 진행하려고 합니다. 감사합니다.