본문 바로가기

Unreal/Udemy 강의

Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-21

타이머

탱크에서 Fire가 가능하도록 해줬으니, 타워에서도 가능하게 해줄 차례이다.

타워는 탱크를 보면 알아서 Fire를 해야하므로 타이머를 사용하도록 하였다.

 

FTimerManager라고 하는 클래스로 타이머 설정이 가능하며, 이는 GetWorldTimerManager() 함수를 통해 얻게 된다.

이후 SetTimer 함수를 통해 실질적인 타이머 설정을 하게 된다.

이때 필요한 인풋 매개 변수들이 있는데 우선 타이머를 관리하는 타이머 핸들이 필요하다.

이를 위해 따로 선언해주어야할 필요가 있으며, 마찬가지로 타이머가 실행되기까지 걸리는 시간에 대한 변수와 콜백 함수가 필요하여 각각 선언 및 구현을 해줄 필요가 있다.

 

콜백 함수는 언제 발사할지의 여부이다.

우리는 타워의 일정 범위내에 도달하면 타워가 탱크를 향해 회전하도록 하였다.

해당 코드와 똑같이 회전을 Fire()로만 바꾸어서 작성해주면 된다.

 

이제 타이머 설정을 해주어야 한다.

앞서 4가지 인풋 매개 변수에 대해서는 앞서 설명한 것도 있고, 여태 해왔던 것이 있어서 무슨 내용인지 알 수가 있다.

(타이머 핸들, 해당 클래스, 콜백 함수 주소, 발사 시간)

 

마지막 bool 타입은 타이머가 반복되는지에 대한 유무이며, 우리는 2초후 반복해서 Fire() 하는 것을 원하므로 true를 전달해주어야 한다.

 

이제 컴파일하고 실행해보면 무사히 Fire() 을 수행하는 것을 볼 수 있다.

 

이번 강의에서 추가적으로 코드에 대한 리팩토링을 해주었다.

Tick 함수와 CheckFireCondition() 함수에서 동일하게 타워의 범위를 체크하는 내용이 있으므로, 이를 따로 함수로 만들어주었다.

 

리팩토링을 통해 전보다 정갈한 코드를 확인할 수 있다.