Creating a sonic-style charged spin

I wanted to post this in the forum as it seemed a more general query rather than an issue that needed a definite answer but I couldn’t find a relevant area to post it.

I have a game where the player controls a rolling ball with a joystick. The rolling is controlled by applying force to the ball in a direction matching that of the joystick.
I have a button that, when held, begins the ‘spinning’ action.

The spinning action is intended to pin the object in it’s current position and spin him round quickly to give the impression that he’s ‘charging up.’ Upon release of the button he launches forward with a boost.

It works, sort of.

The only problem really is that despite the function setting his velocity to 0,0,0 he still slides slightly as he spins. He slides enough to make it obvious he’s not stationary anyway.
This is a problem because the whole point of this mechanic is to allow for accurate dashes, effectively pausing movement, allowing the player to aim with the joystick and then dashing in the desired direction.

I think the complication comes from the joystick applying force to the ball in a direction that allows the ball to be ‘pointed’ whilst also applying torque to make it spin.

My question is - given the setup of my game mechanics (rigidbody.addForce driving the ball movement) is this a good way to go about this or a terrible one doomed to fail? Is there a way to make what I have work or is there a more efficient, reliable way to do it?

Thanks for reading :slight_smile:

Another suggestion might be to set the rigidbody constraints

when spin
sonic.rigidbody.constraints = RigidbodyConstraints.FreezePosition;

to release
sonic.rigidbody.constraints = RigidbodyConstraints.None;