액터 반복하기
현재 플레이어 컨트롤러에 대해서만 GameHadEnded 함수를 호출하고 있다.
하지만 AI 에게도 마찬가지로 게임이 종료되었음을 알려줄 필요가 있다.
이를 위해서 레벨에 존재하는 모든 컨트롤러에 대해 접근을 할 수 있어야 하는데, TActorRange 템플릿 클래를 통해 하게 된다.
우선 누가 이겼는지 판별을 위해 게임 종료 함수를 새롭게 만들어주자.
그리고 TActorRange를 통해 레벨에 존재하는 컨트롤러를 모두 찾게 된다.
템플릿 클래스이므로 템플릿에 목표 대상인 AController를 넣어주고,
for 반복문을 통해 모든 컨트롤러에 대해 접근하게 된다.
이후 해당 컨트롤러가 AI인지, 플레이어인지 체크하기 위해 IsPlayerController 함수를 사용하여 판별해주고,
해당 함수를 통해 얻은 결과값을 EndGame 함수의 인자인 bIsPlayerWinner와 비교해줌으로서 플레이어가 이겼는지 졌는지에 대한 판별을 하게 된다.
만약 bIsPlayerWinner에 false를 넣는다면, 이는 플레이어가 지는 경우를 나타내며 기존 PawnKilled 함수에 할당했던 내용을 Endgame(false)로 대체 하게 된다.
이후 컨트롤러에 GameHadEnded 함수를 넣어주고 앞서 얻은 플레이어가 이겼는지 졌는지에 대한 판별 값을 넣어주면 된다.
그리고 여기서는 포커스 값을 넣어주도록 하는데, 이는 플레이어가 이겼을 시 포커스를 빼앗는 경우를 방지하기 위함이다.
기존에는 플레이어가 패배하는 케이스만 고려했기에 포커스를 nullptr로 할당했었다.
컴파일하고 실행해보면 전과 같은 결과를 얻을 수 있다.
이제 이를 토대로 다음 강의에서 플레이어가 이긴 경우에 대해 다루게 된다.
'Unreal > Udemy 강의' 카테고리의 다른 글
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-43 (0) | 2024.07.22 |
---|---|
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-42 (0) | 2024.07.22 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-40 (0) | 2024.07.19 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-37 (0) | 2024.07.15 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-36 (0) | 2024.07.14 |