게임 시작
게임을 시작하자마자 바로 플레이 되는 것은 다소 부자연스러울 수 있다.
따라서 게임 시작하기에 앞서 딜레이를 주고, 일정 딜레이를 가진 이후에 본격적인 게임이 시작되도록 해보자.
먼저 딜레이를 위한 변수와, 해당 기능을 위한 함수를 선언해주자.
해당 내용들은 게임모드에 대한 이야기이므로, 게임 모드 클래스에서 선언 및 구현하게 된다.
해당 함수는 게임이 시작할 때 실행되므로 BeginPlay에서 호출하게 된다.
기존 BeginPlay 안에는 Tank와 Tank에 대한 컨트롤러를 얻는 과정이 있다.
해당 기능 또한 우리가 구현할 함수에 합쳐주었다.
먼저 딜레이 시간 동안은 탱크가 움직일 수 없다.
우리는 이를 SetPlayerEnableState 함수를 따로 구현하여 설정을 해준 적이 있다.
여기서도 동일하게 비활성화를 위해 해당 함수에 false 값을 전달한다.
이제 본격적으로 타이머를 설정해줄 차례이다.
전에도 사용한 적이 있는 SetTimer 함수를 통해 설정하게 된다.
전에 사용한 SetTimer 함수와 다소 다른 버전을 사용하게 된다.
우선 첫 번째 인풋 파라미터는 똑같이 타이머 핸들을 사용한다 따라서, 타이머 핸들을 따로 선언해준다.
다음으로 콜백 함수이다.
우리는 SetPlayerEnabledState 함수를 통해 비활성화를 하고자 한다.
하지만 해당 함수는 인풋 파라미터가 필요한 함수이다.
따라서 콜백 함수의 주소를 직접 가져오는 대신, 타이머 델리게이트라는 새로운 개념을 사용하게 된다.
타이머 델리게이트는 인풋 파라미터를 받은 함수를 바인딩하는 것이 가능하다.
해당 델리게이트는 우선 CreateUObject라는 함수를 통해 초기화가 가능하다.
먼저 User Object를 값으로 받으며, 콜백 함수가 존재하는 클래스이다.
다음으로 콜백 함수의 주소, 콜백 함수를 호출할 때 콜백 함수에 전달하고 싶은 값을 차례대로 할당하게 된다.
우리는 기본적으로 탱크가 움직이지 않고, 딜레이 후 움직이는 것을 원하기에 마지막은 true을 전달하여 다시 움직이도록해준다.
위 타이머 델리게이트를 기존 SetTimer의 콜백 함수 위치에 대신 사용하게 되는 것이다.
이제 콜백 함수 부분을 처리했으니 SetTimer 함수의 나머지 인풋 파라미터를 살펴보자.
이제 남은 것은 콜백이 호출되기 전 지연 시간을 나타내는 StartDelay와 타이머 반복 여부를 나타내는 bool 타입을 넣어주면 된다.
StartDelay의 값으로 3을 할당하였기에, 처음에 움직이지 않다가 3초의 지연을 가진 후에 다시 탱크가 움직이게 된다.
'Unreal > Udemy 강의' 카테고리의 다른 글
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-33 (0) | 2024.04.13 |
---|---|
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-32 (0) | 2024.04.13 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-30 (0) | 2024.04.09 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-29 (0) | 2024.04.09 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-28 (0) | 2024.04.09 |