레트로의 유니티 게임 프로그래밍 에센스 - 6.1

Cosmos·2023년 4월 4일
0

학습 매체 : 책

책이름 : 레트로의 유니티 게임 프로그래밍 에센스

저자 : 이제민


본 내용은 해당 강의 내용을 공부하면서 정리한 글입니다.


  • 6 ~ 8장에서는 사방에서 무수히 많이 날아오는 탄알을 가능한 한 오랫동안 피하는 탄막 슈팅 게임 '닷지'를 만든다.

이 장에서 다루는 내용

1. 머티리얼

2. 플레이어 조작 구현하기

3. Update( ) 메서드

4. Input 입력 감지 메서드

5. 입력 매니저


6.1 씬 구성하기

  • 유니티 창을 다음과 같이 설정


6.1.1 레벨 만들기

  • 레벨의 바닥과 벽을 만들자.

  • 바닥 만들기

Plane의 위치가 원점이 아닌 경우

  • 생성된 Plane 게임 오브젝트의 위치가 (0, 0, 0)이 아닐 수 있다. 새로운 게임 오브젝트는 씬 창의 중심(씬 카메라가 보고 있는 곳)에 생성되기 때문이다.
  • 만약 Plane의 위치가 원점이 아니라면 아래 과정을 수행하여 오브젝트의 위치를 (0, 0, 0)으로 리셋한다.

  • 컴포넌트(여기서는 Transform)의 > Reset을 클릭하면 해당 컴포넌트 설정이 모두 기본값으로 리셋된다.
  • 인스펙터 창에서 Plane 게임 오브젝트의 Transform 컴포넌트의 Scale을 (2, 1, 2)로 변경하자.

Plane의 크기와 유닛 단위

  • Plane의 기본 크기는 가로세로 10유닛(Unit)이다.
  • 유니티에서 1유닛Cube 한 변의 길이다. 그러므로 Plane의 가로나 세로 방향으로 Cube 게임 오브젝트를 10개 나열할 수 있다.
  • Scale을 (2, 1, 2)로 수정했으니 Plane 게임 오브젝트의 가로 세로 길이는 각각 20유닛이 된다.
  • 1유닛을 현실의 몇 미터에 대응시킬지는 개발자 마음이다. 보통은 편의상 1유닛을 1미터로 취급한다.

6.1.2 머티리얼

  • 유니티에서 게임 오브젝트의 컬러는 머티리얼(Material)이 결정한다. 머티리얼은 셰이더텍스쳐가 합쳐진 에셋으로, 오브젝트의 픽셀 컬러를 결정한다.

  • 셰이더는 주어진 입력에 따라 픽셀의 최종 컬러를 결정하는 코드이다. 셰이더는 질감과 빛에 의한 반사와 굴절 등의 효과를 만든다. 텍스처는 표면에 입히는 이미지 파일이다.

  • 셰이더는 물감으로, 텍스처는 스케치나 밑그림으로 이해하면 된다.

  • 새로운 머티리얼 만들기

  • 프로젝트 창 > + Material 클릭

  • 생성된 머티리얼의 이름을 Plane Color로 변경

  • 생성된 머티리얼을 선택하면 인스펙터 창에서 머티리얼에 관한 여러 설정값이 보인다.

  • 여기서 알베도(Albedo)는 반사율이라는 뜻으로, 물체가 어떤 색을 반사할지 결정한다. 알베도는 물체 표면의 기본색을 결정한다.

  • Albeod 옆의 컬러 필드를 선택

  • 컬러 창에서 RGB의 값을 (0, 0, 0)으로 변경 > 컬러 창 닫기

  • 이제 색이 변경된 머티리얼을 Plane에 적용해보자.

  • Plane Color 머티리얼을 씬 창의 Plane 게임 오브젝트로 드래그&드롭


6.1.3 벽 만들기

  • 게임 도중 플레이어가 바닥을 벗어날 수 없도록 Plane 게임 오브젝트 사방에 벽을 추가하자.

  • 하이어라키 창에서 Cube 오브젝트 생성

  • 생성된 Cube 게임 오브젝트의 이름은 Wall로 변경

  • Wall의 Position은 (0, 0.5, 0), Scale은 (20, 1, 1)로 변경

  • Wall 게임 오브젝의 Position을 (0, 0.5, 10)으로 변경

  • Wall 게임 오브젝트를 Plane 앞쪽 가장자리에 배치했다. 이제 뒤쪽에도 벽을 배치해보자.

  • 하이어라키 창에서 Wall 선택 > [Ctrl + D]로 복제

마우스 오른쪽 클릭 > Duplicate 선택으로도 복제가 가능하다.

  • 생성된 Wall(1)의 Position을 (0, 0.5, -10)으로 변경

  • 이제 좌우에도 벽을 배치해보자.

  • 똑같이 [Ctrl + D]로 벽 두 번 복제

  • Wall(2)의 Position을 (10, 0.5, 0), Scale을 (1, 1, 20)으로 변경

  • Wall(3)의 Position을 (-10, 0.5, 0), Scale을 (1, 1, 20)으로 변경

  • 이제 레벨을 구성하는 게임 오브젝트들을 하나의 게임 오브젝트 아래에 모아서 정리하겠다.

  • 빈 게임 오브젝트 생성

  • 이름을 Level로 변경

  • 만약 Trangform의 Position 값이 기본값(0, 0, 0)이 아니라면 Reset 버튼을 통해 리셋하기

  • 이제 바닥과 벽 게임 오브젝트를 Level의 자식으로 만들자.

  • [Shift + 클릭]으로 Plane ~ Wall(3)을 모두 선택

  • 선택한 게임 오브젝트들을 Level 게임 오브젝트로 드래그&드롭

  • 이제 바닥과 벽 게임 오브젝트들은 Level 게임 오브젝트의 자식이 된다. 하이어리키 창에서 Level 옆에 삼각형으로 생긴 접기/펼치기 버튼을 볼 수 있다.

  • 자식 리스트를 펼치거나 접을 수 있다.

다음 강의에서 계속~

profile
게임 개발을 목적으로 공부하고 있는 대학생입니다.

0개의 댓글