2016-04-10 11 views
1

У меня есть проблема вращения в Unity. Я читаю значения степени из файла, и я хочу сделать поворот вокруг x,y, and z axes. Однако, когда я использовал этот код, значения степени вращения меняются. Модуль активов Suited Man делает разные повороты.Вращение в единстве 3D

target = Quaternion.Euler(x, y, z) 
transform.rotation = Quaternion.Slerp(startpos, target, Timer.fracComplete)  

Как решить эту проблему? Спасибо.

ответ

2

Вы можете использовать Quaternion.eulerAngles, чтобы получить представление кватерниона Vector3, а затем преобразовать Vector3 в Quaternion, используя Quaternion.Euler.

Пример:

Vector3 rot = myTransform.rotation.eulerAngles; 
rot = new Vector3(rot.x,rot.y+180,rot.z); 
myTransform.rotation = Quaternion.Euler(rot); 

UPDATE:

Это мой тестовый код, объект поворачивается на оси Y. При нажатии клавиши 'D'.

public class BallControl : MonoBehaviour 
{ 
    public Transform test; 

    void Start() 
    { 
    } 

    void Update() 
    {   
     if (Input.GetKey(KeyCode.D)) 
     { 
      Vector3 rot = test.rotation.eulerAngles; 
      rot = new Vector3(rot.x, rot.y + 1, rot.z); 
      test.rotation = Quaternion.Euler(rot); 
     } 
    } 
} 

Euler to Quaternion

Quaternion to AxisAngle

+0

Это не сработало. Модуль актива не вращался, он оставался постоянным. – Acceleboy

+0

@Acceleboy Можете ли вы показать мне обновленный код – Antony

+0

Мой код C# здесь. Спасибо, что ответили. Transform suitman = transform; Vector3 rot = suitman.rotation.eulerAngles; rot = new Vector3 (rot.x, rot.y, rot.z); suitman.rotation = Quaternion.Euler (rot); – Acceleboy