今日のUnity (3) 回転キューブ
今日のUnity (2) Rigidbodyの生成(2014/7/29)のつづき。今回はキューブを回転させてみる。移動や回転などのアニメーションはAnimationコンポーネントでGUI上からも設定できるけれど、今回はスクリプトから操作してみた。
キューブのローカル座標のX軸、Y軸、Z軸を中心としてそれぞれ30度、40度、50度回転させているだけ。操作はできない。
キューブ(Cube)
キューブのテクスチャは、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くらい出ていることになる。
回転は奥が深く、オイラー角やクォータニオンといった別の指定方法もあるみたい。また取り上げたい。