Unityで簡単な物理演算を試してみよう
はじめに
前回は、Unityの設定と基本操作について解説しました。今回は、Unityを使って簡単な物理演算を行い、オブジェクトを動かしてみたいと思います。
重力を付けてみる
まずUnityを起動し、前回作成したプロジェクトを開きましょう。Unityを起動すると、前回作成したプロジェクト名が表示されているはずです(図1)。
今回は、画面中央のCubeに重力を付けてみます。ヒエラルキーウィンドウでCubeを選択したら、インスペクターウィンドウを見てみましょう。一番下に「AddComponent」と書かれたボタンがあるので、クリックしてみます(図2)。
これでComponentの操作が可能となります。ComponentはGameObjectの成分です。例えば、前回で操作したTransformはGameObjectの位置や回転、サイズを表す成分です。このようにGameObjectには複数のComponentが付随しており、追加や削除ができます。また、プログラムコードを記述してGameObjectに自作のComponentを付けることも可能です(図3)。
今回は、Cubeに重力を付けるため「Rigidbody」をAddComponentします。Componentの上部にあるテキストスペースに“rigidbody”と入力して候補を検索しましょう(図4)。検索結果にRigidbodyが表示されたらクリックします。
インスペクターウィンドウで確認すると、Rigidbodyが追加されているはずです(図5)。
それでは、この状態で物理演算が正しく動いているか確認してみましょう。画面上部中央にある実行ツールからPlayボタンをクリックします(図6)。
Cubeが重力に従って落下していくと思います。しかし、今の状態ではまだ“床”がありません。このままではCubeは永遠に落下し続けてしまいます。そこで、落下を確認するために図7のような床を作りましょう。
ヒエラルキーウィンドウの上部にあるCreateをクリックして「3DObject」→「Cube」と選択し、インスペクターウィンドウでTransformの各値を図8のように設定します。
この状態で再びPlayボタンを押してみましょう。上手くいけば、床の上にCubeが落下する様子を確認できます(図9)。
コライダーについて
次に、先ほどRigidbodyを付けたCubeを複製してみましょう。ヒエラルキービューのCubeを右クリックして「Copy」→「Paste」と選択します(図10)。Duplicateでも複製を行えます。
コピーしたCubeは最初のCubeと同じ座標にあると思います。この状態であえて何も調整せずにPlayボタンを押して実行してみましょう。すると、Cubeが1つだったときとは違う挙動になります(図11)。
これには、コライダーコンポーネントが関係しています。インスペクターウィンドウで確認してみると「Box Collider」というComponentが付いていることがわかります(図12)。
Box Colliderはゲームなどの当たり判定で利用されます。当たり判定がなければ、Rigidbodyを使用して重力による落下が行われても、床をすり抜けて落下し続けてしまいます。今回は2つのCubeの当たり判定が重なっていたため、挙動がおかしくなったのです。
では、きちんと真っすぐ落下するように、2つの位置を調整しましょう。床の上に落下すれば、どこに配置してもかまいません。ここでは図13のように位置を調整しました。
床で跳ねるようにする
続いて、Cubeが床に当たった時に跳ねるようにしてみましょう。「Assets」→「Create」→「Physic Material」と選択します(図14)。
これで新しくPhysic Materialが作成されるので、適当に名前を付けます。ここでは“Spring”という名前にしました。プロジェクトウィンドウでこのSpringを選択し、インスペクターウィンドウで確認してみます(図15)。
ここでは、跳ねるCubeを作るために「Bounciness」を「1」に設定しましょう。Bouncinessは跳ね返り係数のことです。入力したらプロジェクトウィンドウから最初のCubeにドラッグ&ドロップ、もしくはCubeのInspectorの「Box Colider」→「Material」から設定します。
これでPlayボタンを押して実行してみましょう。上手くいけば片方のCubeのみが跳ね、もう片方のCubeはそのまま落下するような動作をします(図16)。
おわりに
いかがでしたか。今回解説したように、Unityではプログラムコードを書かなくても簡単な物理シミュレーションを行えます。ARのように現実を利用する表現のコンテンツには重要な項目なので、それぞれしっかりと覚えておきましょう。
次回は、ARで表示するキャラクターモデルを作成し、PC上で動かしてみたいと思います。