학습 매체 : 책
책이름 : 레트로의 유니티 게임 프로그래밍 에센스
저자 : 이제민
본 내용은 해당 강의 내용을 공부하면서 정리한 글입니다.
스크립트를 사용해서 조작할 수 있는 플레이어 게임 오브젝트를 만든다.
플레이어는 다음과 같은 기능을 가진다.
파란색 캡슐 모양
상하좌우 혹은 WASD 키로 움직일 수 있다.
탄알에 맞으면 죽는다.
Player Color 머티리얼을 씬 창의 Player 게임 오브젝트로 드래그&드롭
이것으로 파란색 캡슐 형태의 Player 게임 오브젝트가 만들어졌다.
나중에 탄알을 만들 때 탄알 입장에서 충돌한 게임 오브젝트가 플레이어인지 확인할 방법이 필요하다. 이때 게임 오브젝트의 태그(Tag)를 사용한다.
태그는 게임 오브젝트를 분류하고, 코드에서 게임 오브젝트를 구별하는 데 사용된다.
Player 태그 선택
이렇게 Player 태그를 설정하면 나중에 탄알이 Player 게임 오브젝트와 충돌했을 때만 게임 오버가 실행되게 할 수 있다.
탄알 입장에서 충돌한 상대방 게임 오브젝트의 태그가 Player인지 체크하면 되기 때문이다.
이제 Player 게임 오브젝트는 물리 상호작용이 가능하다. 그런데 Player 게임 오브젝트는 캡슐 형태이다. 리지드바디 컴포넌트를 그대로 사용하면 플레이어가 오뚝이처럼 이리저리 넘어질 수 있다.
Player 게임 오브젝트가 넘어지는 것을 막기 위해 리지드바디의 제약(Constraints) 옵션을 사용한다. 제약을 사용하면 어떤 축의 위치나 회전이 변경되지 않게 고정할 수 있다.
Freeze Position은 Y 체크, Freeze Rotation은 X, Z 체크
이제 Player 게임 오브젝트의 높이(Position Y)가 변경되지 않으며, 오직 Y축으로만 회전할 수 있다.
Transform의 Position과 Rotation을 직접 변경하는 경우
- 리지드바디의 제약 옵션을 사용하면 힘이나 충돌 등 물리적인 상호작용으로 위치나 회전이 변경되는 것을 막을 수 있다.
- 하지만, Transform 컴포넌트의 Position이나 Rotation에 새로운 값을 할당하여 위치나 회전을 변경하는 것은 막을 수 없다.
다음 강의에서 계속~