2024. 1. 26. 16:27ㆍ카테고리 없음
어느정도 팀원과의 협업을 통해 각자 맡은 분량의 기능들이 구현이 되었다. 만들어진 기능들을 하나씩 옮겨가며 게임 싸이클이 진행될 수 있도록 만들어보았다.
1. 플레이어
-FSM 방식의 플레이어(캐릭터 컨트롤러 사용)
PlayerStateMachine 을 통해 상태 변화에 유동적으로 사용하기에 적합하다.
-일반적인 플레이어(리지드바디, 콜라이더 사용)
터레인 방식으로 만들어진 맵에 위의 방식으로 만들어진 플레이어의 경우 벽을 계속해서 기어 오르는 오류가 발생해서 추가로 플레이어를 만들었다.
두가지 방법으로 플레이어를 만들어보았는데 여기서 고민해야 되는 부분이 카메라 설정을 어떻게 해야할지 모르겠다.
첫번째 플레이어는 3인칭 시야로 씨네마씬을 사용하여 Virtual 카메라를 추가하여 카메라를 사용하도록 만들었는데, 매끄러운 벽이나 가까운 벽들에 닿았을 때 어지러움을 야기했다.
두번째 플레이어는 1인칭 시야로 Main 카메라를 플레이어에 넣어서 사용을 했는데, 1인칭이다보니 벽과의 충돌이나, 화면 전환은 부드러웠지만 애니메이션이 보이지 않는 단점이 있다.
2. UI
-시작화면
게임시작 및 맵을 선택할 수 있도록 UI를 만들었다.
-로딩화면
씬 전환이 일어날 때 로딩화면을 거치며 게이지가 차도록 만들었다.
-게임화면
인벤토리 및 게임설명, 아이템 설명, 플레이어 스탯(체력, 스태미나)을 위한 UI를 추가해주었다.
-메뉴팝업화면
메뉴팝업은 P키를 눌러서 사용할 수 있으며, 현재 볼륨조절, 게임다시하기, 메인화면으로 가기의 기능을 만들었다.
3. 적
-적(Enemy)의 경우 FSM 방식으로 첫번째 플레이어와 유사한 방식으로 만들었다. 일정 범위에 Player 태그 및 Character Health 컴포넌트가 들어있는 GameObject를 따라가며, 공격을 수행한다.
트러블 슈팅
적을 만들고, 스크립트 작성 및 적용들을 다했다고 생각했는데, Enemy 는 플레이어를 추격하지 않고 앞으로만 공격을 하는 오류가 발생했다.
저번주에 시작한 작업인데 아직까지 오류 해결이 안되다보니 원인 파악이 시급했다. 천천히 스크립트들을 하나씩 읽어보며 빠진 코드가 있는지 확인을 해보았는데, 역시나 한줄의 코드가 작성되지 않았다.
애니메이션 컨트롤러를 사용하여 Player 와 Enemy의 동작을 수행하는 과정에서 BaseAttackParameterHash가 빠져있어서 공격을 위한 ChasingState 스크립트가 적용되지 않았던 것이다.
4. 사운드
현재는 배경음만 적용이 되어있고, 맵마다 분위기가 다르다 보니 팀원들에게 각각의 맵에 적절한 배경음을 추가하기로 했다.
추후에 효과음을 추가하여 게임의 몰입도를 높여줄 것이다.
5. 맵
맵을 만드는 방식은 팀원마다 모두 달랐다.
-터레인 방식으로 맵 제작
나는 터레인을 사용하여 맵을 만들었는데,
터레인 방식으로 만들어진 맵의
장점은 곡선이나 자유롭게 맵을 구현할 수 있는 점은 편리한 Tool이라고 생각한다.
단점은 매끄러운 질감표현이 안되어서 카메라나, 플레이어와의 충돌처리가 부드럽지 못하다는 것이다. 추가로 캐릭터 컨트롤러를 적용하여 경사로를 오를 수 있는 Damping 수치를 어느정도 해야되는 지 아직까지는 파악하지 못했다보니 맵을 마음대로 올라가버리는 오류가 발생한다.
6. 아이템
아이템의 경우 게임을 수월하게 진행할 수 있도록 도움을 주는 요소들로 제작을 해보았다.
-나침반 : 플레이어가 종료지점을 찾을 수 있도록 방향을 알려준다.
-체력포션 : 적과의 전투에서 닳은 체력을 회복할 수 있다.
-발광석 : 자신이 지나온 길임을 표시할 수 있도록 바닥에 버릴 수 있는 아이템이다.
-포털 : 플레이어가 시작, 종료지점에 다다르거나, 함정에 빠질 수 있도록 설치해준 아이템이다.
-에너지볼 : 미로게임을 하면서 단순히 종료지점만 찾는 것이 아니라 미로 속에 숨겨진 에너지볼을 모두 모은 뒤에 탈출을 해야 되는 미션을 만들었다.
-점프력 상승 물약 : 에쎗 추가 및 획득은 가능하지만 아직 효과에 대한 구현을 하지 못했다.
-이동속도 상승 물약 : 에쎗 추가 및 획득은 가능하지만 아직 효과에 대한 구현을 하지 못했다.