- Home /
How to limit object rotation?
I'm rotating my object with Mouse Drag, and limited its rotation at certain angle, I can rotate it on counter clockwise
 
but i cant rotate it the oppisite direction (clockwise) somthing like this

How can I be able to rotate it on both direction but with limiting at certain angle like both images???
the following code is attached with object...`
 public class MouseDrag : MonoBehaviour
 {
     
     private float baseAngle = 0.0f;
     private float maxRotaion = 60f;
         
 
 
     void Start()
     {
 
         }
         void OnMouseDown ()
         {
 
          
         var dir = Camera.main.WorldToScreenPoint (transform.position);
         dir = Input.mousePosition - dir;
         baseAngle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
         baseAngle -= Mathf.Atan2(transform.right.y, transform.right.x) * Mathf.Rad2Deg;
         }
 
         void OnMouseDrag ()
         {
 
         // Limit platform rotation
         if (transform.rotation.eulerAngles.z <= maxRotaion ) {
                         var dir = Camera.main.WorldToScreenPoint (transform.position);
                         dir = Input.mousePosition - dir;
                         var angle = Mathf.Atan2 (dir.y, dir.x) * Mathf.Rad2Deg - baseAngle;
 
                         transform.rotation = Quaternion.AngleAxis (angle, Vector3.forward);
 
                         
 
         }        
 }
on the rigidebody component there is constraints I don't know if it works the same in 2d as 3d, but with a limitation of position and rotation it can be done without code right there.
thanks for the reply ..my platform has no rigidbody attached .. @Radivarig answer works fine.. :)
Answer by Radivarig · Jul 10, 2014 at 03:36 AM
 // Limit rotation
     void OnMouseDrag (){
         var dir = Camera.main.WorldToScreenPoint (transform.position);
         dir = Input.mousePosition - dir;
         var angle = Mathf.Atan2 (dir.y, dir.x) * Mathf.Rad2Deg - baseAngle;
 
         if (angle >= -maxRotaion && angle <= maxRotaion)
             transform.rotation = Quaternion.AngleAxis (angle, Vector3.forward);
     }
Cheers, Radivarig
Your answer
 
 
             Follow this Question
Related Questions
Rotating the game object with direction of mouse move 0 Answers
Rotating sprite with mouse 0 Answers
2D Mouse Drag and Rotate Object Problem 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                