前提・実現したいこと
質問1
transform.localRotationにQuaternion.Eulerを掛けると、
transform.localRotationにQuaternion.Eulerの角度が足されるという認識で合っていますか?
質問2
Quaternion.Euler同士の掛け算は、角度の足し算という認識で合っていますか?
試したこと
まず、transform.localRotationもQuaternion.Eulerも、共にQuaternionであると認識しています
(もし間違っていたらご指摘お願いします)。
そして、
transform.localRotation = Quaternion.Euler(X軸回りの回転角度, Y軸回りの回転角度, Z軸回りの回転角度)
とすると、インスペクタのtransformのRotationの各成分が、
Quaternion.Eulerの引数の各成分と一致すると認識しています(もし間違っていたらご指摘お願いします)。
この知識を前提として、
下記のコードを試してみました。
C#
1 void Update () { 2 this.transform.localRotation *= Quaternion.Euler (1f, 0f, 0f); 3 Debug.Log(this.transform.localRotation.eulerAngles); 4 }
上記コードは、毎フレーム1度ずつX軸回りの回転だけが行われている
(毎フレーム1度ずつX軸回りの角度が足されて回転している)ものになると想定していたのですが、
これのログを取ると、
一見、インスペクタのtransformの角度(Rotation)が1度ずつ増えいてるように見えて、
途中からインスペクタのtransformの角度(Rotation)のZ成分が180度に切り替わったりしたので、
インスペクタ上の表示では純粋な角度の足し算にはならないということは認識しました。
ただし、シーン上で実際の回転を見る限りでは、1度ずつ角度が加算されているような回転に見えました。
質問3
これより、上記コードは、
「インスペクタの表示上では、各成分の純粋な足し算の表示にはならないが、
実際の回転では、引数で指定した成分の軸のみに純粋な角度の足し算が行われて回転する」という考え方で
合っていますか?
質問4
「A *= B」は、「A = B * A」ではなく、「A = A * B」で合っていますか?
質問4は合っているみたいでした。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/01/05 13:35 編集
2019/01/05 19:03
退会済みユーザー
2019/01/06 05:23 編集
2019/01/06 06:49 編集
退会済みユーザー
2019/01/06 15:06