I’m currently struggling to achieve the following behavior with my top down game using GAS: I can control the directional movement with WASD and am able to shoot a projectile in the direction of the mouse cursor. However, I want my characters rotation to be effected by slow effects such that
- when I change direction via WASD the character should wait for the rotation and only start moving when facing the final direction. Currently the movement occurs simultaneously with the rotation which feels weird.
- when standing still and I shoot a projectile behind the character, the character should first rotate to that direction and then start shooting. Currently the projectile is shot first and after the montage the rotation finishes.
So far, I implemented gameplay abilities GA_ShootProjectile, GA_Move_WASD and GA_Rotate as following. I also tried different variations with “Use Controller Desired Rotation“ and “Orient Rotation to Movement” flags without success.
GA_Move_WASD: takes enhanced input values and uses Pawn→AddMovementInput
GA_Rotate: rotates character via Controller→SetControlRotation to current mouse position. Since this function returns immediately I added a delay to simulate the rotation. Additionally I block all other abilities via tag.
As for the shooting the idea was to chain GA_Rotate and GA_ShootProjectile:
I now have the following issues:
- for shooting: the character just rotates but then does not shoot since when the TryActivateAbility is executed, it is invalid due to the blocking tag and just skips it
- for the movement: this is completely unaffected by the rotation yet. I’m not sure if I should add the rotation logic directly in GA_Move_WASD or not
- I have no indicator wether the rotation is finished or not. Something like WaitForRotation would be nice. Is this something I have to implement by myself?
- Since it is multiplayer, this functionality needs to be replicated as well.


