Unityどころか、C言語とか、そもそもプログラミングとかもやったことがありません。ですが、前回ルービックキューブの解き方を解説する記事を作るに当たり、どうしても3Dモデルで作ったルービックキューブを使いたくて、Unityに挑戦してみたというお話の第二弾です。
Contents
キューブの回転方法
前回、立方体の色分けまでわかりましたので、キューブを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つのキューブをまとめて回転させることで、キューブ同士を接触させることなく、回転できました。
ルービックキューブを回転させてみた
ここまでの確認で回転させる方法自体は分かっていたので、その方法をルービックキューブのモデルに当てはめてみました。キレイに回っています。ルービックキューブのモデルを作り、単純な回転まではイメージ通りに再現することができました。