How to limit orientation of object/rigidbody?

Hi, I am trying to solve a problem but it seems that the methods provided on the internet aren’t suited and tend not to work. I am making spaceship game and I am trying to limit the roll of the ship. The idea is for it to stop applying force when it gets to a 10 degree angle and it must stay at 10 degrees unless the user turns to the other side.
I am a bit stubborn and would like to use forces and not transform when it comes to moving objects in my games. The other idea is to apply a counter force so that it stays at 10 degrees and yet again when the player turn to the other side a torque will be added to rotate it the other way. Here is the code, try to ignore the commented code.
Any help would be appreciated.

 using UnityEngine;
using System.Collections;
public class ShipControl : MonoBehaviour {
 
     public Rigidbody mainBodyRigid;
     public Rigidbody[] mainThrustForward = new Rigidbody[2];
     public int amountMainThrustForward;
 
     public float maxMainThrust;
     public float maxTurnTorque;
     public float maxRoll;
     public float minRoll;
     private float currentRoll;
     private float currentPitch;
     private float currentYaw;
    private Quaternion mainBodyRigidQuat;
     private Quaternion newRollQuat;
     private float thrust = 3000;
     void Start ()
    {
         mainBodyRigidQuat = mainBodyRigid.rotation;
         currentRoll = mainBodyRigidQuat.eulerAngles.x;
         currentPitch = mainBodyRigidQuat.eulerAngles.z;
         currentYaw = mainBodyRigidQuat.eulerAngles.y;
    }
    
     void Update ()
     {
        mainBodyRigidQuat = mainBodyRigid.rotation;
         currentRoll = mainBodyRigidQuat.eulerAngles.x;
         currentPitch = mainBodyRigidQuat.eulerAngles.z;
         currentYaw = mainBodyRigidQuat.eulerAngles.y;
         //newRollQuat = new Quaternion(10, currentYaw, currentPitch, mainBodyRigidQuat.w);
    }
     void FixedUpdate()
     {
        if(Input.GetKey(KeyCode.D))//Apply torque to rotate on x-axis(this is roll)
         {
             mainBodyRigid.AddRelativeTorque(new Vector3(0,thrust,0), ForceMode.Force);
         }
        if(Input.GetKey(KeyCode.A))))//Apply torque to rotate on x-axis(this is roll)
         {
             mainBodyRigid.AddRelativeTorque(new Vector3(0,thrust*(-1),0), ForceMode.Force);
         }
        
         if(currentRoll <= 10)
         {
                   //This is where I need help
         }
 
    
        
     }
}

There are some bugs within your code. The if statement, and the code rotated around the y axis (currentYaws). But I guess you’ve just cleaned up a bit before posting this?

There are several ways to do this. Modifying angularVelocity probably is the best way:

         if(currentRoll <= 10)
         {
                   //This is where I need help
 mainBodyRigid.angularVelocity = Vector3.zero; 

         }

Lerping the thrust variable based on the max angle would create a smooth movement/stop…

Thank you for the reply. I am changing the y axis because of the way the object is set up. I found a similar solution like this. When the object’s orientation is less than ten it is still decreasing the rotation but not by much. This can easily be fixed but I don’t have a way of determining which way the spaceship is banked at. Because if I bank it left or right the orientation will stay 10 degrees, which is weird, I thought it would be 350 left and 10 right if you understand what I am saying.

I solved the problem. The axis on my object was incorrect and when I corrected that I just applied a counter force if the angke where in the max and min angle ranges. Thank you for the help.