赤兎ラボ

コーディングからバージョン管理、業務効率化までをまとめます。

Unity Tips 回転を簡潔に制御する

前書き

UnityにおけるQuartenionの制御は制作の上で壁になります。
Quartenionに限らず、3Dで回転を扱う際にはジンバルロック等の様々な障害があります。
これを解決するためのノウハウを1つ紹介します。

方法

回転させたいオブジェクトの親オブジェクトに空オブジェクトを作成するだけです。

f:id:RedRabbitNet:20191230101410p:plain



これを行うことで回転の軸が決定できます。 多くの場合、キャラクターは左右に回転(Y軸中心に回転)し、
たまにキャラクターの首の向きに上下回転(X軸中心に回転)したい程度のはずです。
逆に、これを行わない場合、Y軸中心に回転させたつもりなのに
一定の角度を超えたときに回転しなくなったりといった不具合が発生する可能性があります。

この考え方は回転を扱う様々なときに役立ちます。
例えば2Dでも以下のような回転は格段に楽になります。

f:id:RedRabbitNet:20191230101434p:plain



親オブジェクトから一手の距離にキャラクターを配置し、親オブジェクトを回転します。
すると、キャラクターは弧を描くような起動で移動することができます。
仮に親オブジェクトを配置せずにプログラムで実装する場合においても、
弧を描く数学式を考えるより定点を配置して回転させることでシンプルな実装ができるはずです。

後書き

プログラマは数学が得意な傾向が強く、結果的に数学式を考えてしまいがちだと思っています。
僕はこの知識をAfterEffectsによる動画作成を通して学びました。
この例に漏れず、簡単な実装を行うためにはイメージが大切だと思っています。
回転に限らず単純な実装の足掛かりとなることを望みます。