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

Cosmos·2023년 4월 4일
0

학습 매체 : 책

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

저자 : 이제민


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


6.3 플레이어 제작


  • 스크립트를 사용해서 조작할 수 있는 플레이어 게임 오브젝트를 만든다.

  • 플레이어는 다음과 같은 기능을 가진다.

  1. 파란색 캡슐 모양

  2. 상하좌우 혹은 WASD 키로 움직일 수 있다.

  3. 탄알에 맞으면 죽는다.


6.3.1 플레이어 게임 오브젝트 만들기

  • 먼저 플레이어가 될 게임 오브젝트를 만들고 표면을 파란색으로 변경하자.

  • 하이어라키 창 + > 3D Object > Capsule

  • Capsule의 이름 Player로 변경

  • Player의 Position을 (0, 1, 0)으로 변경

  • 이제 Player Color 머티리얼을 만들어 보자.

  • 프로젝트 창에서 Material 생성 후 이름을 Player Color로 변경

  • Player Color의 Albedo 컬러를 (0, 100, 164)로 변경

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

  • 이것으로 파란색 캡슐 형태의 Player 게임 오브젝트가 만들어졌다.


6.3.2 태그 설정하기

  • 나중에 탄알을 만들 때 탄알 입장에서 충돌한 게임 오브젝트가 플레이어인지 확인할 방법이 필요하다. 이때 게임 오브젝트의 태그(Tag)를 사용한다.

  • 태그는 게임 오브젝트를 분류하고, 코드에서 게임 오브젝트를 구별하는 데 사용된다.

  • 하이어리키 창에서 Player 선택 > 인스펙터 창Tag 버튼 클릭

  • Player 태그 선택

  • 이렇게 Player 태그를 설정하면 나중에 탄알이 Player 게임 오브젝트와 충돌했을 때만 게임 오버가 실행되게 할 수 있다.

  • 탄알 입장에서 충돌한 상대방 게임 오브젝트의 태그가 Player인지 체크하면 되기 때문이다.


6.3.3 리지드바디 컴포넌트 설정

  • Player 게임 오브젝트를 움직이는 데는 물리적인 힘과 속력이 필요하다. 따라서 Player 게임 오브젝트가 물리적인 상호작용이 가능하도록 리지드바디 컴포넌트를 추가한다.

  • 이제 Player 게임 오브젝트는 물리 상호작용이 가능하다. 그런데 Player 게임 오브젝트는 캡슐 형태이다. 리지드바디 컴포넌트를 그대로 사용하면 플레이어가 오뚝이처럼 이리저리 넘어질 수 있다.

  • Player 게임 오브젝트가 넘어지는 것을 막기 위해 리지드바디의 제약(Constraints) 옵션을 사용한다. 제약을 사용하면 어떤 축의 위치나 회전이 변경되지 않게 고정할 수 있다.

  • 리지드바디 컴포넌트의 Constraints 필드 펼치기

  • Freeze Position은 Y 체크, Freeze Rotation은 X, Z 체크

  • 이제 Player 게임 오브젝트의 높이(Position Y)가 변경되지 않으며, 오직 Y축으로만 회전할 수 있다.

Transform의 Position과 Rotation을 직접 변경하는 경우

  • 리지드바디의 제약 옵션을 사용하면 힘이나 충돌 등 물리적인 상호작용으로 위치나 회전이 변경되는 것을 막을 수 있다.
  • 하지만, Transform 컴포넌트의 Position이나 Rotation에 새로운 값을 할당하여 위치나 회전을 변경하는 것은 막을 수 없다.

다음 강의에서 계속~

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

0개의 댓글