2016-04-10 18 views
1

Ich habe ein Rotationsproblem in Unity. Ich lese Gradwerte aus Datei und möchte eine Rotation um x,y, and z axes machen. Die Gradwerte der Drehung ändern sich jedoch, wenn ich diesen Code verwende. Das Asset-Modul Suited Man macht verschiedene Rotationen.Rotation in Unity 3D

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

Wie kann ich dieses Problem lösen? Vielen Dank.

Antwort

2

Sie können Quaternion.eulerAngles verwenden, um eine Vector3-Darstellung des Quaternions zu erhalten und dann den Vector3 mithilfe von Quaternion.Euler zurück in ein Quaternion zu konvertieren.

Beispiel:

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

UPDATE:

Dies ist mein Testcode, das Objekt auf der Y-Achse gedreht wird, wenn die I 'D' drücken.

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

Es hat nicht funktioniert. Das Asset-Modul rotierte nicht, es blieb konstant. – Acceleboy

+0

@Acceleboy Können Sie mir Ihren aktualisierten Code zeigen – Antony

+0

Mein C# -Code ist hier. Danke für die Antwort. Verwandlung suitman = transformieren; Vector3 rot = suitman.rotation.eulerAngles; rot = neu Vector3 (rot.x, rot.y, rot.z); suitman.rotation = Quaternion.Euler (rot); – Acceleboy