2016-04-10 25 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を使用すると、QuaternionのVector3表現を取得し、Quaternion.Eulerを使用してVector3をQuaternionに戻すことができます。

例:

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

UPDATE:私は 'D' キーを押したとき

これは私のテストコードでは、オブジェクトはY軸に回転させます。

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#コードはこちらです。答えてくれてありがとう。 変換suitman = transform; Vector3 rot = suitman.rotation.eulerAngles; rot = new Vector3(rot.x、rot.y、rot.z); suitman.rotation = Quaternion.Euler(rot); – Acceleboy

関連する問題