2014-10-14 11 views
0

FixedUpdate()에 여러 객체가 자체적으로 회전합니다.
이제 한 객체의 회전을 추적해야하며 objX으로 전화 할 수 있습니다. 내가 그것을 검색하면 회전은 0에서 360까지만 진행됩니다. 360 도가 지난 후에 회전 할 수 있습니까? 예를 들어
나는 560도해야유니트 트랙 객체 회전

float x = objX.transform.rotation.z; 

변수 x 같은 것을 사용하는 경우.
그게 가능합니까?

+0

카운트 롤오버에 카운터를 추가하고 + 현재 rotation.z를 증가 시키시겠습니까? –

+0

마우스로 회전하고 있기 때문에 나는 그것을 할 수 없다. 그리고 내가 너무 빨리 마우스를 당길 때, 나는 증분을 건너 뛴다. – filipst

+0

아, 아마도 [이] (http://answers.unity3d.com/questions/229681/tracking-object-rotation.html) –

답변

0

여기 회전을 추적하는 방법이 있습니다.

Vector3 mouseClickPos; 
    float angle; 
    float lastAngle; 
    int fullRotations; 
    public float realAngle; 

    void FixedUpdate(){ 
     mouseClickPos = Input.mousePosition;  
     Vector3 dir = mouseClickPos - Camera.main.WorldToScreenPoint(transform.position); 
     angle = Mathf.Atan2(dir.y,dir.x) * Mathf.Rad2Deg; 
     angle-=90; 
     if(lastAngle - angle > 270){ 
      fullRotations ++; 
     }else if(angle - lastAngle > 270){ 
      fullRotations --; 
     } 
     Debug.Log(360*fullRotations + angle); 
     Quaternion q = Quaternion.AngleAxis(angle, Vector3.forward); 
     transform.rotation = Quaternion.RotateTowards(transform.rotation, q, 6); 
     lastAngle = angle; 
    }