Unity 강의 정리 4-3장: 소코반 게임 만들기 - 레벨 디자인 🎮

나무·2023년 8월 15일
1

Unity

목록 보기
6/21
post-thumbnail

인프런에 있는 레트로의 유니티 C# 게임 프로그래밍 에센스 강의를 듣고 정리하는 글입니다!


1. 레벨의 벽 구성하기 🧱

게임 레벨에 벽을 만들어 플레이어의 이동 경로를 제한하고, 공간을 구조화할 것이다

1.1 Horizontal Wall과 Vertical Wall 생성

  • Cube 생성: GameObject 메뉴에서 3D Object > Cube를 선택하여 Cube 오브젝트를 만든다.
  • 크기 조정: Transform 컴포넌트에서 Scale을 조정하여 벽의 크기를 정한다. Horizontal Wall은 x축을 길게, Vertical Wall은 z축을 길게 조정한다.

1.2 벽 배치

  • 평행이동: Ctrl 키를 누른 상태로 오브젝트를 옮기면 1 단위로 평행이동이 가능하다. 이를 통해 벽을 정확한 위치에 배치할 수 있다.
  • 배치 팁: 레벨의 그리드와 벽의 크기를 맞추면, 정확한 배치가 수월하다.

1.3 Collider 설정

  • Collider 컴포넌트: 플레이어 오브젝트(공)이 벽을 뚫지 못하게 하려면, 벽 오브젝트에 Collider 컴포넌트가 필요하다.
  • Collider 타입: Box Collider를 사용하여 벽의 형태와 일치하게 설정한다.

2. 부모-자식 관계로 오브젝트 구조화하기 👨‍👧

레벨 디자인한 객체들을 하나의 오브젝트 안에 묶으면, 관리가 편리해진다.

2.1 'Level' 오브젝트 생성

  • Empty GameObject: GameObject 메뉴에서 Create Empty를 선택하여 빈 오브젝트를 생성한다.
  • 이름 변경: 생성한 빈 오브젝트의 이름을 'Level'로 변경한다.

2.2 자식 오브젝트로 묶기

  • 오브젝트 선택: 레벨에 사용된 모든 오브젝트를 선택한다.
  • 부모로 설정: 선택한 오브젝트들을 'Level' 오브젝트 위로 드래그 앤 드롭하여 자식 오브젝트로 만든다.

2.3 관리의 장점

  • 단일 선택: 'Level' 오브젝트를 선택하면, 자식 오브젝트 전체를 한 번에 선택할 수 있다.
  • 변경의 일관성: 부모 오브젝트의 속성을 변경하면, 자식 오브젝트도 동일하게 변경된다.

이러한 부모-자식 관계는 레벨의 여러 구성 요소를 효과적으로 관리하고, 일관된 변경을 적용하는 데 도움이 된다.


3. 플레이어가 이동시킬 박스 구성하기 📦

플레이어가 밀 수 있는 박스는 게임의 중요한 요소로, 퍼즐 해결에 사용된다. 다음은 박스를 만드는 과정이다.

3.1 ItemBox 오브젝트 생성

  • Cube 생성: GameObject 메뉴에서 3D Object > Cube를 선택하여 Cube 오브젝트를 만든다.
  • 이름 변경: 오브젝트의 이름을 'ItemBox'로 변경한다.

3.2 Rigidbody 컴포넌트 추가

  • Rigidbody 컴포넌트: 'ItemBox' 오브젝트에 Component 메뉴에서 Physics > Rigidbody를 추가한다. 이를 통해 물리 엔진이 박스에 영향을 미칠 수 있다.

3.3 박스 배치

  • 박스 크기 조정: Transform 컴포넌트에서 Scale을 조정하여 원하는 크기로 만든다.
  • 박스 위치 설정: 레벨 디자인에 맞게 박스를 배치한다.

4. 카메라의 시점과 배경 설정하기 🎥

카메라의 시점과 Clear Flag 설정은 게임의 시각적 표현에 중요한 역할을 한다.

4.1 메인카메라 선택

  • 메인카메라 선택: Hierarchy 창에서 'Main Camera' 오브젝트를 선택한다.

4.2 카메라 시점 변경

  • 시점 조정: Transform 컴포넌트에서 Position과 Rotation을 조정하여 원하는 시점을 설정한다.

4.3 Clear Flag 변경

  • Clear Flag 속성: Camera 컴포넌트에서 Clear Flags 드롭다운 메뉴를 열고 'Solid Color'를 선택한다. 이 설정은 카메라가 렌더링 전에 화면을 단색으로 지우는 방식을 변경한다.

4.4 배경 색상 변경 (선택 사항)

  • 배경 색상: Solid Color를 선택한 경우, Background 속성에서 색상을 선택하여 배경 색상을 변경할 수 있다.

이러한 설정을 통해 게임의 카메라 시점을 조절하고, 렌더링 방식을 변경하여 게임의 시각적 표현을 제어할 수 있다.


5. 박스의 회전 제어하기 🔄

플레이어가 박스를 밀 때, 대각선 방향으로 밀면 박스가 회전하는 현상을 막고 싶을 수 있다. 이를 위해 다음 단계를 수행한다.

5.1 Rigidbody 컴포넌트 선택

  • Rigidbody 컴포넌트 접근: ItemBox 오브젝트의 Rigidbody 컴포넌트에 접근한다.

5.2 Constraints 설정

  • Freeze Rotation 체크: Rigidbody 컴포넌트의 Constraints 섹션에서 'Freeze Rotation' 옵션을 체크한다. X, Y, Z 축을 모두 선택하여 회전을 제한한다.

이 설정을 통해 플레이어가 박스를 밀어도 박스가 회전하지 않고, 오직 평행이동만 수행하게 된다.


6. 재사용 가능한 Prefab 구성하기 🏗️

Prefab은 재사용 가능한 게임 오브젝트의 템플릿이다. 동일한 오브젝트를 여러 번 사용해야 할 때 유용하다.

6.1 Prefab 생성

  • Hierarchy에 있는 오브젝트 선택: 재사용하려는 오브젝트를 Hierarchy 창에서 선택한다.
  • Assets로 드래그: 선택한 오브젝트를 Assets 창으로 드래그하여 Prefab을 생성한다.

6.2 Prefab 사용

  • Prefab 끌어오기: Assets 창에서 Prefab을 선택하고, Hierarchy 또는 Scene 뷰로 끌어다 놓는다.

Prefab를 사용하면 씬에서 여러 번 사용할 오브젝트를 빠르게 복제하고, 일관된 설정을 유지할 수 있다.


7. 게임 종료 지점 표시하기 🎯

게임 레벨의 종료 지점을 나타내는 오브젝트를 만드는 방법은 다음과 같다.

7.1 EndPoint 오브젝트 생성

  • EndPoint 오브젝트 생성: 원하는 3D 오브젝트를 만들고, 이름을 'EndPoint'로 변경한다.

7.2 좌표계 설정

  • Global 좌표계로 설정: Transform 컴포넌트에서 좌표계를 Global로 설정한다.

7.3 Collider 컴포넌트 설정

  • Collider 컴포넌트 추가: EndPoint 오브젝트에 Collider 컴포넌트를 추가한다.
  • Is Trigger 체크: Collider 컴포넌트의 'Is Trigger' 옵션을 체크한다. 이 설정으로 충돌 감지는 하되, 물리적인 막힘은 없게 한다.

이러한 설정을 통해 플레이어가 EndPoint 오브젝트에 도달했을 때 특정 이벤트를 트리거할 수 있게 설정할 수 있다.


🎓 정리

이번 장에서는 Unity에서 소코반 게임의 레벨 디자인을 구성하였다. 벽과 박스의 배치, 카메라 설정, 회전 제어, Prefab 사용법, 그리고 게임 종료 지점의 설정 등 다양한 요소를 다루었다.

전체 구조 및 레벨 디자인

profile
개인 공부를 정리함니다

0개의 댓글