Unityでルービックキューブ

Unity初心者✕ルービックキューブ#002 キューブを回転させる

Unityどころか、C言語とか、そもそもプログラミングとかもやったことがありません。ですが、前回ルービックキューブの解き方を解説する記事を作るに当たり、どうしても3Dモデルで作ったルービックキューブを使いたくて、Unityに挑戦してみたというお話の第二弾です。

キューブの回転方法

前回、立方体の色分けまでわかりましたので、キューブを3つほど並べて回転させてみることにしました。オブジェクトを軸回転させるには、transform.RotateAroundを使えば良いとのことなので、実際に試してみました。

3つのキューブで回転させてみた

スクリプトを作成してみた


Hierarchyウィンドウの中のゲームオブジェクト(自分で作成したキューブのゲームオブジェクトです)を選びます。僕の場合は、GameObject(1)という名前にしていました。
そうすると、GameObject(1)のInspectorウィンドウが開きますので、InspectorウィンドウのAdd Componentを選びました。
最後に、Add Componentウィンドウの中のNew scriptをクリックして、新スクリプトを作成。とりあえず、後で分かりやすいように「回転」という名前をつけました。

こうして、スクリプト付きのキューブのモデルができあがりました。このキューブをコピーしていき、合計3個のキューブを並べて回転動作を確認することにしました。

X軸を中心に回転させてみた

    void Update()
    {
        transform.RotateAround(new Vector3(0, 0, 0), new Vector3(1, 0, 0), 90 * Time.deltaTime);
    }


void updateの中身を一部書き換えてみて、まずはX軸を中心にしてキューブを回転させてみることにしました。イメージ通り回転させられました。

Y軸を中心に回転させてみた

    void Update()
    {
        transform.RotateAround(new Vector3(0, 0, 0), new Vector3(0, 1, 0), 90 * Time.deltaTime);
    }


続いてY軸を中心にしてキューブを回転させてみました。これもイメージ通りですね。

Z軸を中心に回転させてみた

    void Update()
    {
        transform.RotateAround(new Vector3(0, 0, 0), new Vector3(0, 0, 1), 90 * Time.deltaTime);
    }


最後にZ軸を中心にしてキューブを回転させてみました。ここでも問題ありません。3つのキューブをまとめて回転させることで、キューブ同士を接触させることなく、回転できました。

ルービックキューブを回転させてみた


ここまでの確認で回転させる方法自体は分かっていたので、その方法をルービックキューブのモデルに当てはめてみました。キレイに回っています。ルービックキューブのモデルを作り、単純な回転まではイメージ通りに再現することができました。

Unity初心者✕ルービックキューブ#001 立方体の各面の色分けに悩むUnityどころか、C言語とか、そもそもプログラミングとかもやったことがありません。ですが、前回ルービックキューブの解き方を解説する記事...
Unity初心者✕ルービックキューブ#003 ボタン操作でキューブを90度だけ回転させるUnity&C言語の初心者がUnity上でのルービックキューブ再現に挑戦してみたというお話の第三弾です。 キューブの回転方法 前...
Unity初心者✕ルービックキューブ#004 キューブを一面ずつ回転させるUnity&C言語の初心者がUnity上でのルービックキューブ再現に挑戦してみたというお話の第四弾です。今回は、キューブを一面ずつ回転さ...