2015-02-05 3 views
1

Я пытаюсь повернуть объект на основе клавиш со стрелками, но он застревает. Левая и правая клавиши работают отлично, но клавиши вверх и вниз застревают под углом 90 градусов. Это мой код:Вращение объекта с eulerAngles не работает должным образом

void turnCube() 
{ 
     if(Input.GetKey (KeyCode.LeftArrow)) 
     { 
      Camera.main.transform.parent.transform.eulerAngles += new Vector3(0,1,0); 
     } 

     if(Input.GetKey (KeyCode.RightArrow)) 
     { 
      Camera.main.transform.parent.transform.eulerAngles += new Vector3(0,-1,0); 
     } 

     if(Input.GetKey (KeyCode.UpArrow)) 
     { 
      Camera.main.transform.parent.transform.eulerAngles += new Vector3(1,0,0); 
     } 

     if(Input.GetKey (KeyCode.DownArrow)) 
     { 
      Camera.main.transform.parent.transform.eulerAngles += new Vector3(-1,0,0); 
     } 
} 
+1

почему вы не используете 'Camera.main.transform.eulerAngles + = новый Vector3 (0,1,0);'? Я не понимаю, что вы пытаетесь сделать. – Dinal24

ответ

1

От Unity3D API,

Transform.eulerAngles

использовать только эту переменную для чтения и установите углы в абсолютных значениях. Не увеличивайте их, так как это не удастся, если угол превышает 360 градусов. Вместо этого используйте Transform.Rotate.

Так используйте Transform.Rotate,

if(Input.GetKey (KeyCode.LeftArrow)) 
{ 
    Camera.main.transform.Rotate(Vector3.left * Time.deltaTime); 
}