Day 3. 기본 컴포넌트 종류와 역할
유니티에서 게임 오브젝트를 구성하는 기본 컴포넌트의 종류와 역할을 알아봅니다. 이 컴포넌트들은 나중에 게임 개발에 필수적인 요소로 쓰이게 됩니다.
Day 3. 기본 컴포넌트 종류와 역할
1. 오늘 이걸 배우면 무엇을 할 수 있을까?
안녕하세요, 여러분! 오늘은 유니티에서 게임 오브젝트를 구성하는 기본 컴포넌트에 대해 알아보도록 하겠습니다. 이 컴포넌트들이 왜 중요한지 궁금하시죠? 사실, 게임에서 모든 오브젝트는 이런 컴포넌트를 통해 다양한 역할을 수행하게 돼요. 예를 들어, 게임 속 캐릭터가 움직이거나 몬스터가 나타나고 사라지는 것, 전부 컴포넌트 덕분이랍니다.
이제 예시를 들어볼게요. RPG 게임에서 주인공 캐릭터가 오른쪽으로 이동한다고 생각해보세요. 이때, 캐릭터의 위치를 바꿔주는 컴포넌트가 필요해요. 바로 Transform 컴포넌트가 그 역할을 하죠. 또, 캐릭터가 보이도록 해주는 건 Renderer 컴포넌트 덕분이랍니다. 몬스터가 등장할 때도 이런 컴포넌트들이 함께 작용해 다양한 이벤트를 만들어내요.
이런 컴포넌트들은 게임 개발의 뼈대를 이루는 중요한 요소라서, 오늘 배우는 내용이 앞으로 다양한 기능을 구현하는데 큰 도움이 될 거에요. 캐릭터를 만들고 움직이게 하고, 몬스터를 생성하고, 맵을 꾸미는 데 필수적인 요소들이니까요.
2. 오늘의 학습 목표
- 유니티의 기본 컴포넌트를 구분할 수 있다
Transform컴포넌트의 역할을 이해할 수 있다Renderer컴포넌트를 통해 오브젝트를 화면에 표시할 수 있다Collider컴포넌트를 이용해 충돌 처리를 할 수 있다
3. 먼저 화면부터 맞춰보자
유니티 에디터를 열고, 우리가 필요한 창들을 맞춰볼까요?
- 상단 메뉴에서 Window → General → Inspector 클릭
- Inspector 창은 오른쪽에 나타나야 해요. 만약 보이지 않으면 다시 클릭해보세요.
- 왼쪽 상단의 Hierarchy 창을 찾으세요
- Hierarchy 창은 프로젝트 내의 모든 오브젝트가 리스트로 나오는 곳이에요.
- Scene 창이 가운데에 위치해 있는지 확인하세요
- 이곳에서 우리가 만든 오브젝트들이 어떻게 보일지 확인할 수 있어요.
이렇게 화면 구성을 맞추면, 이제 본격적으로 컴포넌트를 알아볼 준비가 된 거에요!
4. 개념을 아주 쉽게 설명해보기
유니티의 기본 컴포넌트들은 게임 오브젝트의 다양한 기능을 정의해주는 작은 블록들이에요. 이 블록들은 각각의 역할이 있어요. 컴포넌트를 이해하는 건 마치 레고 블록을 조립하는 것과 비슷해요. 각 블록이 어떤 역할을 하는지 알면, 원하는 모양을 만들 수 있겠죠?
Transform 컴포넌트
Transform 컴포넌트는 게임 오브젝트의 위치, 회전, 크기를 담당합니다. 현실 세계에서 이걸 비유하자면, 집의 주소가 어디인지, 어느 방향을 보고 있는지, 얼마나 큰지에 해당하는 정보에요. 그래서 캐릭터나 물체가 어디에 있는지, 어떻게 움직이는지를 결정할 때 사용됩니다.
Renderer 컴포넌트
Renderer 컴포넌트는 오브젝트가 화면에 어떻게 보일지를 결정해요. 쉽게 말해, 이 컴포넌트가 있어야 게임 속 캐릭터가 여러분 눈에 보인답니다. 현실에서는 불을 켜서 사물을 보이게 하는 것과 같죠.
Collider 컴포넌트
Collider 컴포넌트는 오브젝트가 다른 오브젝트와 충돌할 수 있도록 해줍니다. 이걸로 벽에 부딪히거나 다른 캐릭터와 상호작용할 수 있게 되는 거에요. 현실에서는 물체가 서로 부딪히는 걸 상상해보세요.
4-1. 왜 이렇게 만들어졌을까? (설계 철학)
유니티의 컴포넌트 시스템은 게임 개발을 좀 더 유연하고 쉽게 하기 위해 설계되었습니다. 만약 컴포넌트가 없다면, 각 오브젝트마다 모든 기능을 별도로 코딩해야 할 거에요. 이렇게 되면 중복 코드가 많아지고, 수정할 때도 어려움이 생기죠.
유니티는 이런 문제를 해결하기 위해 각 기능을 컴포넌트로 모듈화했어요. 덕분에 필요한 기능만 가져다 붙이면 되니까, 오브젝트를 다양하게 조합하고 쉽게 변경할 수 있답니다. 다른 게임 엔진들도 비슷한 구조를 가지고 있지만, 유니티는 특히 직관적인 인터페이스 덕분에 초보자도 쉽게 다룰 수 있다는 장점이 있어요.
4-2. 프로퍼티/파라미터 완전 정복
이제 각 컴포넌트의 주요 속성을 표로 정리해볼게요.
| 프로퍼티 | 타입 | 설명 | 기본값 |
|---|---|---|---|
| Position | Vector3 | 오브젝트의 위치 (X, Y, Z) | (0, 0, 0) |
| Rotation | Quaternion | 오브젝트의 회전 | (0, 0, 0) |
| Scale | Vector3 | 오브젝트의 크기 | (1, 1, 1) |
- Position: 오브젝트가 어디에 위치할지를 결정해요. 캐릭터가 이동할 때 이 값을 바꾸면 됩니다.
- Rotation: 오브젝트가 어느 방향을 보고 있는지를 결정해요. 몬스터가 플레이어를 바라보게 할 때 사용할 수 있어요.
- Scale: 오브젝트의 크기를 조절할 수 있어요. 큰 몬스터와 작은 몬스터를 만들 때 유용하죠.
4-3. 내부 동작 원리
유니티의 컴포넌트는 게임이 실행될 때 매 프레임마다 유기적으로 동작합니다. 쉽게 설명하자면, Position 값을 변경하면 유니티 엔진이 내부적으로 그 위치에 오브젝트를 그려주고, 다른 컴포넌트와 상호 작용할 수 있도록 준비합니다.
예를 들어, 캐릭터가 앞으로 걸어갈 때 Transform의 Position 값이 매 프레임마다 조금씩 변화하면서 캐릭터가 이동하는 것처럼 보이게 되는 거죠. 이런 방식으로 매 프레임마다 오브젝트의 상태가 업데이트되면서 게임이 자연스럽게 진행됩니다.
5. 실습 1: 그대로 따라 해보기
이제 직접 컴포넌트를 사용해보면서 이해를 깊게 해볼까요?
- Hierarchy 창에서 마우스 오른쪽 클릭
- Hierarchy 창은 화면 왼쪽에 있습니다. 만약 보이지 않으면 상단 메뉴에서 Window → General → Hierarchy를 클릭하세요.
- 나타나는 메뉴에서 "3D Object" → "Cube" 선택
- 큐브가 Scene 창에 나타나고, Hierarchy 창에 "Cube"라는 이름의 항목이 생성돼요.
- Inspector 창에서 Cube의 Transform 컴포넌트를 확인
- 여기서 Position, Rotation, Scale 값을 확인할 수 있어요.
- Position 값을 (3, 1, 0)으로 변경
- Cube가 오른쪽 위로 이동한 것을 Scene 창에서 확인할 수 있어요.
// Cube의 Transform 컴포넌트를 조작하는 코드 예시
using UnityEngine; // 유니티 기본 기능을 사용하기 위한 선언
public class MoveCube : MonoBehaviour // MonoBehaviour를 상속받아야 유니티에서 동작함
{
void Start() // 게임 시작 시 한 번 호출되는 함수
{
transform.position = new Vector3(3, 1, 0); // Cube의 위치를 (3, 1, 0)으로 설정
}
}
위 코드가 하는 일:
- MonoBehaviour를 상속받아서 유니티 게임 오브젝트에 붙일 수 있는 스크립트가 됩니다.
Start()함수는 게임 시작 시 한 번만 호출되어 Cube의 위치를 설정합니다.transform.position를 사용해 Cube의 위치를 변경합니다.
6. 많이 헷갈려하는 부분 (중요)
초보자분들이 자주 헷갈리는 부분들을 미리 짚어볼게요.
-
문제: Hierarchy 창이 안 보여요
- 원인: 실수로 창을 닫았거나 다른 창에 가려져 있을 수 있습니다.
- 해결: 상단 메뉴에서 Window → General → Hierarchy 클릭
-
문제: Inspector 창에서 컴포넌트가 보이지 않아요
- 원인: 오브젝트를 선택하지 않았거나, 다른 창에 가려져 있을 수 있습니다.
- 해결: Hierarchy 창에서 오브젝트를 클릭하고 Inspector 창을 확인하세요.
-
문제: Scene 창에서 오브젝트가 안 보여요
- 원인: 오브젝트의 Transform 값이 잘못 설정되었을 수 있습니다.
- 해결: Inspector 창에서 Position 값을 확인하고 조정하세요.
7. 실습 2: 직접 확인해보기
이제 여러분이 직접 실습해보세요!
- Hierarchy 창에서 빈 오브젝트를 3개 만들어보세요
- 각 오브젝트의 이름을 변경해보세요
- Inspector 창에서 Transform 값을 변경해보세요
성공 기준: 오브젝트를 만들고 이름을 바꾸고, Inspector에서 숫자를 바꿀 수 있으면 성공입니다.
8. 오늘 배운 내용 정리
오늘 배운 Transform, Renderer, Collider 컴포넌트는 게임 개발의 기초 중의 기초에요. Transform은 캐릭터의 위치를 변경할 때, Renderer는 캐릭터나 오브젝트를 화면에 표시할 때, Collider는 오브젝트 간의 충돌을 처리할 때 필수적으로 사용됩니다. 예를 들어, RPG 게임에서 캐릭터가 맵을 돌아다니고, 몬스터와 싸우고, 아이템을 줍는 모든 동작에 이 컴포넌트들이 사용됩니다.
9. 내일 예고
내일은 Inspector 창에서 컴포넌트를 다루는 방법을 배워볼게요. 오늘 배운 컴포넌트들을 Inspector에서 어떻게 조정하고 활용할 수 있는지 알아보겠습니다. 내일 수업도 기대해주세요!
Photo by Tim Mossholder on Unsplash