레포지토리 주소 : https://github.com/kjinwoo12/UE5Game_LeagueOfWatch
기준 브랜치 : 3_BasicGameRuels1
이전글에서는 플레이어 조작을 구현했다. 조작할 수 있는 캐릭터로 게임 안을 돌아다닐 수 있게 되었다. 이번엔 단순히 돌아다니는 것을 넘어서 기본적인 게임의 규칙을 구현하고자 한다. 아래는 처음 정했던 기본 게임 규칙이다.
우선 각 항목별로 만들어낼 세부 기능을 정리해보자.
게임이 시작하면 캐릭터를 선택하는 화면이 등장하고, 유저의 캐릭터 선택을 45초 동안 기다린다.
모든 유저의 캐릭터 선택이 완료되면 선택된 캐릭터가 유저의 진영의 기지에서 등장하고, 유저가 조작할 수 있게 된다.
게임이 진행되는 동안 세 개의 공격로에서 각각 30초 간격으로 미니언 6마리가 생성되고, 적 기지를 향해 이동하면서 적 진영의 오브젝트를 공격한다.
체력이 있는 모든 오브젝트는 체력이 0 이하가 되면 파괴되거나 죽는다.
게임의 최종 목표는 적 진영 중요 건물(이하 "넥서스")을 파괴하는 것이다.
세부 기능을 만들면서 순서대로 개발해보도록 하자
캐릭터 선택 기능과 게임시작 규칙을 우선적으로 만들고, 게임진행 규칙과 체력규칙은 다음 글에서 다루겠다.
만들어야 할 세부 기능은 이렇다.
데이터 테이블과 UI는 간단하게 만들 수 있다. 데이터 테이블을 만들고 난 다음에 위젯 블루프린트에서 테이블 내용을 바탕으로 버튼을 생성하면 끝이다. 위젯 블루프린트 이름은 WBP_IngameLevel_CharacterSelection
이다.
만들어야 할 세부 기능은 이렇다.
캐릭터 조작 기능은 이미 구현했으니 넘긴다.
캐릭터 변경 기능에서 중요한 것은 게임 캐릭터를 소환(Spawn
)하고, 빙의(Possess
)하고, 빙의해제(UnPossess
) 하는 것이다. 캐릭터 선택에서 만든 UI 버튼의 클릭 이벤트에서 액터를 소환하고 빙의하는 기능을 넣는다.
이전글에서는 향상된 입력 로컬 플레이어 서브시스템
의 개념과 구현 방법을 알아봤다. 주목해야 할 점은 PlayerController
에서 서브시스템을 가져온 다음 Add Mapping Context
으로 Input Mapping Context
를 가져와야 입력 이벤트가 활성화된다는 것이다. 이전글처럼 BeginPlay
에서 이 작업을 수행한다면 게임모드에서 Default Pawn
으로 캐릭터를 미리 지정하지 않는 이상 입력 이벤트는 활성화되지 않을 것이다.
그럼 어떻게 해야 입력 이벤트를 활성화 할 수 있을까? 캐릭터에는 Possessed
이벤트가 있다. 플레이어가 캐릭터에 빙의(Possess
)하면 발생하는 이벤트다. BeginPlay
대신에 Possessed
이벤트에서 입력 서브시스템을 설정한다면 입력 이벤트는 플레이어가 캐릭터에 빙의 할 때마다 활성화된다.
큰 도움이 되었습니다, 감사합니다.