- Home /
 
               Question by 
               Pauls · Oct 04, 2013 at 04:56 PM · 
                camerarotationrotatearoundeasing  
              
 
              easing camera rotation after mouse up?
Hi,
I would like to ease the rotation of the camera around a target after we drop the mouseclick, I have tried this code but there is nothing happening after we release the click, and when the values are really high, the camera moves after the drop, but only in one straight move. Would you know why?
Here is the code :
 using UnityEngine;
 
 public class CameraDrag : MonoBehaviour {
     private Vector3 dragOrigin;
     public float _speed = 0.05f;
     public int easingSpeed = 1;
     public Transform _target;
     private bool buttonUp = false;
     
     void Update(){
         
         //DOWN
         if (Input.GetMouseButtonDown(0)){
             dragOrigin = Input.mousePosition;
             buttonUp = false;
             return;
         }
         
         //UP
         if ( Input.GetMouseButtonUp(0) ) buttonUp = true;
         if ( buttonUp ){
             RotateObject(_target.position, Vector3.up, 10, easingSpeed);
         }
         
         //DRAG
         if (!Input.GetMouseButton(0)) return;
         else {
             transform.LookAt(_target);
             Vector3 pos = Input.mousePosition - dragOrigin;
                transform.RotateAround(_target.position, Vector3.up, pos.x*_speed);
         }
     }
     
     
     private void RotateObject( Vector3 point, Vector3 axis, float rotateAmount, float rotateTime ) {
         float step = 0; //non-smoothed
         float smoothStep = 0; //smoothed
         float lastStep = 0; //smooth step last time
         float rate = 1 / rotateTime; //amount to increase non-smooth step by
         while( step < 1 ) { // until we're done
             step += Time.deltaTime * rate; //increase the step
             smoothStep = Mathf.SmoothStep(0, 1, step); //get the smooth step
             transform.RotateAround( point, axis, rotateAmount * (smoothStep - lastStep) );
             lastStep = smoothStep; //store the smooth step
             //yield return;
         }
         //finish any left-over
         if(step > 1) {
             transform.RotateAround( point, axis, rotateAmount * (1 - lastStep) );
             buttonUp = false;
         }
     }//#
 }//#class
(source: the code is from this thread : http://answers.unity3d.com/questions/29110/easing-a-rotation-of-rotate-around.html )
Thanks
               Comment
              
 
               
              Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                