How to set 8 directional attack system?

I have a deadzone in which you can move the cursor without turning the camera.
I would like to make it so that you can position your sword in eight positions.

The deadzone works fine. For the 8 positions I thought of:

  • 2D Aim offset with 8 idle poses holding the sword in each position.
  • 8 Montages for the attacks, one per position.
  • 2D aim offset with 8 blocking poses, one per positon.
  • To play the montages we would click LMB.
  • To go to blocking position, we would hold RMB.

The problems are:

  • How to smoothly transition from the idle 2d aim offset to the blocking 2d aim offset?

  • How to SNAP the player’s hand position (and therefore the sword) to one of the eight poses? For example: if I have an increase of 10 in X input, and an increase of 0 in Y input, in a 2d aim offset the player’s hand would move a little bit to the right but would fall between two poses. What I want is to SNAP at the right position (interpolate the movement, but to directly go to the right, not fall in between two poses, think like Mount and Blade).

A different approach I thought of: Depending on mouse input, an enum with a switch on would activate one pose or another (without aim offset), and also a montage or another. The only problem I see is that then if I move the mouse the positions would snap from one to another, it would not interpolate the movement of going from one to another. I think this system is easier, if there was a way to interpolate between poses…