C++에서 타이머 설정하기
게임 종료에 대해서 더 구체화를 해보도록하자.
기존에 PawnKilled를 통해 폰이 죽었을 시 로그메시지가 뜨도록 했지만, 이번에는 PlayerController에 속한 함수인 GameHasEnded 함수를 통하여 플레이어가 죽었을시 게임이 종료되는 로그메시지를 출력해보도록 하자.
이를 위해 PlayerController를 우선 얻고, 해당 컨트롤러를 통해 GameHadEnded 함수를 호출한다.
해당 함수는 해당 플레이어에 대한 포커스 포인터와 bool 값(승패 여부)를 필요로 하는데, 여기서 포커스 기능은 필요없으므로 null로 넘겨준다.
그리고 이제 GameHadEnded 함수를 오버로딩해서 사용하기도하고, 레벨을 다시 시작하는 등의 동작 구현을 위해 PlayerController 클래스를 생성하고, 또 해당 클래스를 기반으로 하여 BP 클래스도 생성해주자.
그리고 해당 BP 클래스를 게임모드 클래스로 할당해주자.
이제 새로 만든 PlayerController 클래스에 GameHadEnded 함수를 오버로딩하기 위해 선언해주자.
이어서 테스트르 로그 메시지를 넣어 오버로딩해주자.
여기서 바로 컴파일을 하기에 앞서 추가로 해주어야 할 작업이 있는데, TakeDamage 함수의 특정 부분의 순서를 바꿔주어야 한다.
기존에 DetachFromControllerPendingDestroy 함수가 if문 최상단에 있었는데, 이럴 경우 컨트롤러을 분리시키기 때문에 이후 호출된 PawnKilled 함수에서 컨트롤러를 통한 함수인 GameHadEnded 함수를 호출하게 못하게 된다.
따라서 GameMode에 대한 내용을 앞으로 땡겨주어야 한다.
이제 컴파일하고 플레이어가 죽으면 해당 로그메시지가 나오게 된다.
이제 타이머를 설정하여 플레이어가 죽으면 5초 뒤에 레벨이 재시작되도록 만들어보자.
우선 기존 PlayerContrlloer 함수에 시작 딜레이인 5초와 FTimerHandle를 선언해주자.
이후 GetWorldTimerManager()를 통해 호출가능한 SetTimer 함수를 통해 타이머를 설정해주자.
FTimerHandle 값, 타이머가 호출될 때 사용할 객체, 작동시킬 함수 (레벨 재시작), 시작 딜레이를 인자로 갖는다.
이제 플레이어가 죽으면 5초 뒤에 레벨이 재시작된다.
'Unreal > 시작해요 언리얼 2023' 카테고리의 다른 글
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-38 (0) | 2024.07.16 |
---|---|
시작해요 언리얼 2023 5주차 정리 (0) | 2023.04.18 |
시작해요 언리얼 2023 4주차 정리 (0) | 2023.04.04 |
시작해요 언리얼 2023 3주차 정리 (0) | 2023.03.29 |
시작해요 언리얼 2023 2주차 정리 (0) | 2023.03.27 |