人工知能に関する断創録

このブログでは人工知能のさまざまな分野について調査したことをまとめています(更新停止: 2019年12月31日)

今日のUnity (3) 回転キューブ

今日のUnity (2) Rigidbodyの生成(2014/7/29)のつづき。今回はキューブを回転させてみる。移動や回転などのアニメーションはAnimationコンポーネントでGUI上からも設定できるけれど、今回はスクリプトから操作してみた。

キューブのローカル座標のX軸、Y軸、Z軸を中心としてそれぞれ30度、40度、50度回転させているだけ。操作はできない。

RotationTest

キューブ(Cube)

f:id:aidiary:20140802084625p:plain

キューブのテクスチャは、OpenGLの勉強をしてた(2008/8/8)とき参考にしていたNeHeのサイトのLesson8から拝借した。このテクスチャは前に拡張現実(AR)のサンプルを書いた(2009/8/29)ときにも使ったことがあった。何かかっこいい。テクスチャからMaterialを作成し、キューブに貼り付けた。キューブには以下のスクリプトを追加。

アニメーションでは、Time.deltaTimeを使うのがポイント。Time.deltaTimeを使わずに単に

    transform.Rotate(speedX, speedY, speedZ, Space.Self);

と書いてしまうとフレームあたり指定した角度だけ回転するため使っているマシンによって回転速度が異なってしまう。Time.deltaTimeは前回のUpdateの呼び出しからの経過時間を返すためこの値をかけることでどのFPSのマシンでも回転速度が一定にできる。手元のマシンでTime.deltaTimeの値を表示すると約0.016秒くらいだった。つまり、このマシンでは62FPSくらい出ていることになる。

回転は奥が深く、オイラー角やクォータニオンといった別の指定方法もあるみたい。また取り上げたい。