回転


Unityでのオイラー角

スクリプトとInspectorの角度が一致しないと思ったら、Unity内ではオブジェクトの傾きはQuaternionで保持しているので、0-360度の範囲を超える情報というのを持っていないようです。
UnityのマニュアルのUnityの回転と向きによると、365度と入れた場合は、5度に置き換わるため、360度+5度という情報は消えてしまうようです。

DOTweenでの回転方向

なぜかDOTweenを使って、DORotateQuaternionをした際に、45と45±360を入れた際に回転方向が逆になった。上記でいうと、360ずらしたものは同じはずなので、向きなどないような気もするけど、、、
Quaternionが複雑なのでどの場合でもこれができるのかはわからないけど、とりあえず回転方向を変えたい場合は360度ずらした数値を入れるとできました。
回転する際には1度角度を0-360の範囲で再設定したほうがいいかもしれません。

DOTweenでの複数回回転

複数回回転するには、720度などと入れても2回転はしません。
そこで、SetLooks(int)とRotateMode.FastBeyond360をつかって、やろうと思いましたが、DORotateで回すと意図しない回り方をすることがあります。
なので、OnCompleteに回転するメソッドを再度呼び出し任意の回数をしたところで抜けるようにしました。

TweenCallback RoundAction = null;
float startRotateAngleX = trans.localEulerAngles.x;

RoundAction = () => {
	if (++count > 4) return;

	startRotateAngleX += 180f;
	trans.DOLocalRotateQuaternion(Quaternion.AngleAxis(startRotateAngleX, Vector3.right), 0.15f).SetEase(Ease.Linear).OnComplete(RoundAction);
};

RoundAction();

ん〜、これだとイージングがLinerでないと変だし、一瞬止まるのでなんかもっといい方法があるような気がします。。。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です