Day 2. 부모-자식 관계와 계층 구조
유니티에서 부모-자식 관계와 계층 구조를 이해하면 캐릭터 이동, 몬스터 생성 등 게임 개발의 기초를 탄탄히 다질 수 있어요.
Day 2. 부모-자식 관계와 계층 구조
1. 오늘 이걸 배우면 무엇을 할 수 있을까?
유니티에서 부모-자식 관계와 계층 구조를 이해하는 것은 게임 개발의 기본 중 기본입니다. RPG 게임을 만들 때 캐릭터가 움직이거나, 몬스터가 생성되는 등 다양한 상황에서 이 개념이 사용됩니다. 예를 들어 캐릭터가 무기를 들고 있을 때, 무기의 움직임은 캐릭터에 따라가야 하잖아요? 이때 무기를 캐릭터의 자식으로 설정해서 캐릭터의 움직임에 따라 함께 움직이도록 구현할 수 있습니다.
또 다른 예로, 몬스터를 여러 마리 생성할 때, 각 몬스터가 한 그룹에 속해 특정 행동을 할 수 있도록 그룹을 부모 오브젝트로 설정할 수 있습니다. 이렇게 하면 부모 오브젝트를 이동시키거나 크기를 조정할 때 그 아래에 있는 모든 자식 오브젝트들이 함께 변하게 됩니다.
게임 내 다양한 오브젝트들을 효율적으로 관리하고, 복잡한 동작을 쉽게 구현하기 위해 꼭 필요한 개념이 바로 이 부모-자식 관계와 계층 구조입니다. 이 개념을 잘 이해하면 나중에 UI 구성에서도 효과적으로 활용할 수 있어요.
2. 오늘의 학습 목표
- Unity에서 부모-자식 관계를 설정할 수 있다.
- 계층 구조를 활용하여 오브젝트를 관리할 수 있다.
- Hierarchy 창에서 오브젝트를 생성하고 배치할 수 있다.
- 계층 구조 변경 시 게임 오브젝트의 변화를 이해할 수 있다.
3. 먼저 화면부터 맞춰보자
유니티 에디터를 열어봅시다. 우선 상단 메뉴를 확인해볼게요. 상단 메뉴에서 Window → General → Hierarchy를 클릭해서 Hierarchy 창을 열어주세요. 이 창은 화면 왼쪽에 위치하게 됩니다. 이곳에서는 게임 오브젝트들의 계층 구조를 확인하고 관리할 수 있어요. 만약 Hierarchy 창이 보이지 않는다면, 방금 설명한 경로를 따라가 다시 열어주세요.
이제 Inspector 창도 확인해볼까요? 상단 메뉴에서 Window → General → Inspector를 클릭합니다. Inspector 창은 화면 오른쪽에 위치하며, 선택한 오브젝트의 세부 정보를 보여줍니다. 이 창을 통해 오브젝트의 위치, 회전, 크기 등을 조정할 수 있어요.
4. 개념을 아주 쉽게 설명해보기
자, 이제 부모-자식 관계에 대해 조금 더 쉽게 설명해볼게요. 이걸 이해하기 위해 현실 세계의 한 예시를 가져와 볼게요. 만약 여러분이 한 손에 책가방을 들고 걷고 있다면, 여러분의 몸과 책가방 사이에는 부모-자식 관계가 있다고 볼 수 있어요. 여러분이 움직이면 책가방도 따라서 움직이겠죠? 여기서 여러분이 '부모'이고, 책가방이 '자식'인 셈이에요.
부모-자식 관계란 이렇게 한 오브젝트가 다른 오브젝트를 포함하고 있어서, 부모 오브젝트가 움직이거나 변형될 때 자식 오브젝트도 함께 영향을 받는 관계를 말합니다. 이 관계를 통해서 여러 오브젝트를 그룹화하여 같이 움직이게 할 수 있죠.
Hierarchy 창은 이러한 부모-자식 관계를 시각적으로 보여주는 공간이에요. 이곳에서는 오브젝트의 계층 구조를 나무 구조(Tree Structure)로 보여주어, 각 오브젝트가 어떤 관계를 맺고 있는지 쉽게 이해할 수 있답니다.
5. 실습 1: 그대로 따라 해보기
이제 실습을 통해 부모-자식 관계를 설정해볼게요.
-
Hierarchy 창에서 마우스 오른쪽 버튼을 클릭하세요.
- "Create Empty"를 선택해 빈 오브젝트를 하나 만들어볼게요. 이 오브젝트는 부모가 될 거에요.
- 정상 결과: "GameObject"라는 이름의 항목이 Hierarchy 창에 생성됩니다.
-
새로 생성된 "GameObject"를 클릭하고, Inspector 창에서 이름을 "ParentObject"로 바꿔주세요.
- 이름 변경이 잘 되었다면 이제 다음 단계로 넘어가겠습니다.
-
다시 Hierarchy 창에서 마우스 오른쪽 버튼을 클릭하고, 이번에는 "3D Object → Cube"를 선택합니다.
- 정상 결과: 화면에 큐브가 나타나며, Hierarchy 창에 "Cube"라는 이름이 추가됩니다.
-
"Cube"를 마우스로 드래그해서 "ParentObject" 위에 올리세요. 그러면 "Cube"가 "ParentObject"의 자식이 됩니다.
- 정상 결과: Hierarchy 창에서 "Cube"가 "ParentObject" 아래로 이동하고, 들여쓰기로 표시됩니다.
이제 "ParentObject"를 선택하고, Inspector 창에서 Transform 컴포넌트의 Position 값을 변경해보세요. "Cube"가 함께 움직이는 것을 확인할 수 있을 거에요.
6. 많이 헷갈려하는 부분 (중요)
-
문제: Hierarchy 창이 안 보여요
- 원인: 실수로 창을 닫았거나 다른 창에 가려져 있을 수 있습니다.
- 해결: 상단 메뉴에서 Window → General → Hierarchy 클릭해서 창을 다시 엽니다.
-
문제: "Cube"가 "ParentObject" 밑으로 안 들어가요
- 원인: 드래그 앤 드롭 시 잘못된 위치에 놓았을 수 있습니다.
- 해결: "Cube"를 정확히 "ParentObject" 위에 놓이도록 천천히 드래그해 보세요.
-
문제: 오브젝트 이름이 변경되지 않아요
- 원인: Inspector 창에서 이름을 변경할 때 다른 부분을 클릭했을 수 있습니다.
- 해결: 이름 변경 후 반드시 엔터 키를 눌러 변경을 완료하세요.
7. 실습 2: 직접 확인해보기
이제 여러분이 직접 해보세요:
- Hierarchy 창에서 빈 오브젝트를 2개 더 만들어보세요.
- 각각의 오브젝트 이름을 "ChildObject1", "ChildObject2"로 변경해보세요.
- 이 두 오브젝트를 "ParentObject"의 자식으로 설정해보세요.
- Inspector 창에서 "ParentObject"의 Transform 값을 변경하면서 자식 오브젝트의 변화를 관찰해보세요.
성공 기준: 오브젝트를 만들어 이름을 바꾸고, 부모-자식 관계를 설정한 후 부모 오브젝트의 변화를 확인할 수 있으면 성공입니다.
8. 오늘 배운 내용 정리
오늘 배운 부모-자식 관계와 계층 구조는 유니티에서 너무나도 중요해요. 캐릭터가 무기를 들고 움직이거나, 몬스터 그룹이 협력해서 움직이는 것을 구현할 때 이 개념이 필수적으로 쓰입니다. 부모-자식 관계를 통해 여러 오브젝트를 그룹화하고, 부모 오브젝트의 변화를 자식 오브젝트가 따르게 만들어 효율적으로 게임 환경을 구성할 수 있습니다.
RPG 게임에서 캐릭터가 이동할 때, 그 캐릭터가 소유한 모든 아이템들은 자연스럽게 따라와야 하잖아요? 부모-자식 관계를 통해 이런 기능을 쉽게 구현할 수 있습니다. 또한, 몬스터를 여러 마리 생성하고 그들이 특정 행동을 할 때 그룹으로 다룰 수 있도록 부모 오브젝트를 활용할 수 있답니다.
9. 내일 예고
내일은 컴포넌트 기반 설계에 대해 배워볼게요. 이걸 배우면 오늘 만든 부모-자식 관계와 더불어 오브젝트에 다양한 기능을 추가할 수 있게 됩니다. 컴포넌트를 활용하면 오브젝트가 어떻게 행동할지, 어떤 역할을 할지 정할 수 있어요. 내일도 함께해요! 😊
Photo by Artem Beliaikin on Unsplash