Physics-based controls and slopes ?

Hi, I’m currently making a 3D game in which the player can control a fish, which is achieved through rigidbody operations. My current controls are quite good to me, except I had to uncheck “Freeze Rotation” on the Y Axis to perform rotations using AddTorque.
Consequently, every time I try to climb a slope, my fish begins to turn perpendicular to it (which is how “normal” physics is supposed to happen when you use a capsule collider I guess).
So I’m currently asking if you knew a mean to either :

1 - Make AddTorque override Freeze Rotation (this way I could just re-check Freeze Rotation in Y and it would be perfect).

2 - Make my rigidbody ignore the physics that make my fish go perpendicular, one way or another.

3 - If nothing else is doable, implement a simple solution to do rotations using anything else than AddTorque for a kind of similar effect (drag control).

Of course, I’m also open to any kind of alternative / better way to solve my problem :slight_smile:
Thanks for your time.

With my own Rigidbody controller, I zero out the rotations in script and use either Mathf.SmoothDamp or Vector3.SmoothDamp as needed for smooth rotations.

(following-on from my clarification request comment above)

Assuming 3D, I’d probably start by modelling the fish as having heading vector which you modify with your controls. I’d then orient the fish with [Transform.LookAt(Vector3 worldPosition)].

I’m gonna pause there for now. Given my uncertainty about the question, I hesitate to take more time to give more detail until a little confirmation that this is in the right direction (e.g. not 2D top view or something!)


[1]Unity - Scripting API: Transform.LookAt