So here’s the thing. I have a simple FPS thing going, I’ve got my player’s hands on screen, they’re wielding a gun and I have a reload animation I play whenever the player reloads his gun. Now I want to do the simplest of things - allow player to reload again only once the animation has finished playing.
I’ve handle player input in C++ with a simple BindAction() setup so that whenever the player presses ‘R’ I call OnReload(), which sets isReloading=true (there of course more logic in there, but I’ve disabled for now to try to figure this out).
In the reload animation I have an animation notify about 80% way through called ReloadDone.
Then in my FPS hands event graph I check for the aforementioned isReloading=true in Event Blueprint Update Animation, in which case I set a secondary boolean variable (triggerReload) to true. I also listen to the ReloadDone notify event, in which case I set isReloading=false and triggerReload=false.
Finally, in the FPS hands animation graph I have an idle and reload state, and the transition rules between the two are just checking if triggerReload is true (go to reload) or false (go to idle). Again, there are more states in there but they are irrelevant and do not get triggered.
Now this setup works fine … as long as I don’t hammer the reload key. If I do, it’s usually the 3rd reload when the hands just play the reload animation and then get stuck on the last frame, and by looking at the anim graph it’s stuck in the reload state. As I’ve literally stripped everything out of my setup, so this puzzles me greatly. It’s as if either the animation notify does not fire, or it does fire but triggerReload gets set to true immediately afterwards, meaning the transition to idle never takes place.
Any ideas what I might be doing wrong here?