Automatic Fire
지금은 사격을 하면 단발로만 발사된다.
이번에는 사격을 누르고 있으면 계속해서 사격이 유지되도록 수정해보자.
먼저 사격 버튼 눌림 여부, 사격해야 하는가에 대한 여부, 자동 사격간 딜레이, 자동 사격에 대한 타이머에 대한 변수를 선언해주었다.
그리고 생성자에서 초기화 해주자.
필요한 함수들도 선언해주자.
사격 버튼 눌렀을 때와 아닐 때에 대한 함수 및 타이머 세팅에 대한 함수,
마지막으로 자동 발사 리셋에 대한 함수가 필요하다.
사격 버튼 눌렀을 때와 아닐 때에 대한 함수는 바인드 액션과 매핑해주자.
기존에 Fireweapon() 함수를 FireButtonPressed() 함수로 대체하게 된다.
이제 각 함수들을 채워주자.
먼저 FireButtonPressed() 함수는 버튼이 눌린 것을 알려야 하므로 bFireButtonPressed 변수를 true로 만들어준다.
그리고 StartFireTimer() 함수를 호출해준다.
FireButtionReleased() 함수는 반대로 bFireButtonPressed 변수를 false로 만들어줄 것이다.
StartFireTimer() 함수의 경우 현재 사격을 해야한다면, FireWeapon() 함수를 호출하여 사격을 실시한다.
이러면 사격을 하고있으므로 bShouldFire 변수는 false로 바꿔준다.
이러한 작업을 하지 않는다면 SetTimer() 함수가 호출되기도 전에 다시 FireWeapon() 함수가 호출되는 상황이 발생할 수 있다.
이제제 SetTimer 함수를 통해 딜레이 시간 후 AutoFireReset() 함수를 호출한다.
해당 함수에서는 bShouldFire 변수를 true로 만들어준다.
함수 이름과 같이 리셋하여 다시 사격 여부를 true로 만들어주는 것이다.
이때 만약 bFireButtonPressed 변수가 true라면 사격을 해야하는 것이므로 StartFireTimer() 함수를 다시 호출하게 된다.
이를 반복하여 처음에는 사격을 해야하고 (bShouldFire = true),
사격을 실시하며 타이머를 통해 AutoFireReset() 함수를 호출하여 bShouldFire 값을 다시 true로 되돌린다.
이때 아직 사격버튼이 눌려있는 상태라면 다시 사격을 하여 결과적으로 AutomaticFireRate 만큼 딜레이를 가진 자동 사격을 실시하게 되는 것이다.
'Unreal > Udemy 강의' 카테고리의 다른 글
Unreal Engine 4 C++ The Ultimate Shooter Course Section 5-1 (0) | 2024.08.19 |
---|---|
Unreal Engine 4 C++ The Ultimate Shooter Course Section 4-13 (0) | 2024.08.19 |
Unreal Engine 4 C++ The Ultimate Shooter Course Section 4-11 (0) | 2024.08.19 |
Unreal Engine 4 C++ The Ultimate Shooter Course Section 4-10 (0) | 2024.08.19 |
Unreal Engine 4 C++ The Ultimate Shooter Course Section 4-9 (0) | 2024.08.19 |