This my current code:
transform.Rotate(0, 0, RollForce * (float)rmove * Time.deltaTime);
transform.Rotate(0, YawForce * (float)ymove, 0 * Time.deltaTime);
transform.Rotate(PitchForce * (float)rmove, 0, 0 * Time.deltaTime);
What do you mean? Each seperate Rotate instruction will rotate around the local axis of the object, one after another. There’s no gimbal lock involved here. However you have your Time.deltaTime at the wrong parameter in the second and third line. You multiply the “0” by deltaTime which is completely pointless. Though your actual non-zero rotation value is not scaled by deltaTime.