2D Pixel Sprite Animation Question

I have a 2D pixel sprite character that holds a rifle.

I know how to make a characters arm/gun point to my mouse cursor but obviously it doesn’t look very good because everything turns on the same axis.

I’m at a loss and don’t know where to go from here.
How do I go about scripting or animating this correctly so everything looks fluid?

A regular problem. Some suggestions.
=> Try to make more axis direction sprites for your characters ( 8 directions or even 16 directions per character ) .
=> However you can NOT make 360 degree sprites for all your characters.
=> The best approach to solve this problem, is use 2D skeleton animation. For example Spine.