Changing object angles without forcing it

Current question on my mind, how can you rotate an object at a certain rate without forcing it? I know that I can do SetAngles(ang) and just force it that way but I’d like to have a more natural rotation. Also, I’d like it so that if it collides with something and sends it into a spin, it will spin naturally instead of instantly snapping back to where it was. The application is this; players will control a space ship that has X amount of rotational power. Players will set a bearing and the ship will begin rotating towards those angles. It’s a convoluted idea, just wondering if anyone’s tried this before.

That should help for the smooth part.

^ This is for the physic entity