티스토리 뷰
플레이어 폰은 플레이어 컨트롤러와 이어져 있는 형태이며, 플레이어가 삭제되는 경우 컨트롤러와 연결이 해제가 되어 통제가 불가능해지는 방식이다.
게임모드는 해당 게임을 담당하고 관리하는 오브젝트라고 볼 수 있으니, 게임모드를 만들어 리스폰기능을 여기에서 보자
게임모드는 블루프린트 생성에서 Game Mode Base를 상속해 생성할 수 있다
리스폰을 하는 블루프린트는 그냥 실행하는 것이 아니라 '죽었을 때' 실행이 되어야 한다. 그래서 이벤트를 따로 만들어주고 '죽었을 때'에 이벤트가 실행이 되는 방식으로 만들어주어야 한다.
Custom Event 메뉴를 통해 이벤트를 만들어주자.
그 후 Spawn Actor from Class 노드를 생성해준다.
그러고 난 후 빨간색 박스 부분이 Class 메뉴인데 이를 자신이 원하는 플레이어 폰으로 잘 설정해준다.
FindPlayerStart 노드를 통해 플레이어 시작점을 찾고 이를 Spawn Transform과 이어준다.
그런데 그 사이에 노드 하나가 더 보이는데 FindPlayerStart는 Actor(파란색)을 반환해주는데 비해 Spawn Transform은 Transform(주황색)을 요구하기 때문에 GetActorTransform으로 Actor에서 Transform을 추출하는 과정이 요구된다
이제 "플레이어가 삭제 될 경우 해당 이벤트를 실행시켜라"라는 사실을 알려줘야 하는데 이는 GetPlayerPawn노드를 만들어 준 후 "OnDestroyed에 이벤트 바인딩" 노드를 만들어준다. 타겟 부분에 GetPlayerPawn을 이어주고, 방금 만든 CustomEvent인 RespawnPlayer이벤트(필자는 이름을 이렇게 지었다.)를 이어준다.
그리고 "플레이어가 삭제 될 경우 해당 이벤트를 실행시켜라"라는 사실을 알려주는 것도 실행되는 과정이 필요하기 때문에 BeginPlay노드 즉, 해당 게임모드가 생성되는 시점에 이 사실을 자각시켜주는 과정을 아래와 같이 만들어준다.
아래는 지금까지 진행된 사항에 대한 전체적인 블루프린트다.
아까 말했다시피 죽었은 경우 플레이어 폰과 게임모드의 연결이 끊어진다고 하는데, 이를 다시 이어주기 위해 Possess 노드를 사용한다
In Pawn엔 재 생성된 플레이어 폰이 들어가며, 타겟엔 Player Controller가 들어가게 된다
그리고 플레이어폰이 삭제되는 경우 바인딩했던 이벤트가 해제되니, 다시 이벤트를 바인딩해주도록 하자
세팅 -> 프로젝트 세팅 -> 프로젝트 -> 맵&모드 -> Default Modes 메뉴에서 Default GameMode와 Default Pawn Class를 만들어주자.
'게임개발 > 언리얼' 카테고리의 다른 글
[블루프린트] 정해진 타겟포인트들을 따라 이동하는 AI 만들기 (0) | 2018.01.12 |
---|---|
[블루프린트] 함수 설정 시 퓨어 옵션의 의미 (0) | 2018.01.04 |
[블루프린트] 이벤트 디스패쳐 만들기 (0) | 2018.01.03 |
[기초] 블루프린트 만드는 방법 (0) | 2018.01.03 |
[블루프린트] 지정된 시간동안 주기적으로 함수를 호출하는 방법 (0) | 2018.01.03 |