Unityで簡単な物理演算を試してみよう

2018年5月8日(火)
Jack Masaki

はじめに

前回は、Unityの設定と基本操作について解説しました。今回は、Unityを使って簡単な物理演算を行い、オブジェクトを動かしてみたいと思います。

重力を付けてみる

まずUnityを起動し、前回作成したプロジェクトを開きましょう。Unityを起動すると、前回作成したプロジェクト名が表示されているはずです(図1)。

図1:前回(第4回)で作成したプロジェクトを開く

今回は、画面中央のCubeに重力を付けてみます。ヒエラルキーウィンドウでCubeを選択したら、インスペクターウィンドウを見てみましょう。一番下に「AddComponent」と書かれたボタンがあるので、クリックしてみます(図2)。

図2:インスペクターウィンドウの「AddComponent」をクリック

これでComponentの操作が可能となります。ComponentはGameObjectの成分です。例えば、前回で操作したTransformはGameObjectの位置や回転、サイズを表す成分です。このようにGameObjectには複数のComponentが付随しており、追加や削除ができます。また、プログラムコードを記述してGameObjectに自作のComponentを付けることも可能です(図3)。

図3:さまざまなComponentを追加できる

今回は、Cubeに重力を付けるため「Rigidbody」をAddComponentします。Componentの上部にあるテキストスペースに“rigidbody”と入力して候補を検索しましょう(図4)。検索結果にRigidbodyが表示されたらクリックします。

図4:Rigidbodyを追加

インスペクターウィンドウで確認すると、Rigidbodyが追加されているはずです(図5)。

図5:インスペクターウィンドウを確認するとRigidbodyが追加されている

それでは、この状態で物理演算が正しく動いているか確認してみましょう。画面上部中央にある実行ツールからPlayボタンをクリックします(図6)。

図6:実行ツールからPlayボタンをクリック

Cubeが重力に従って落下していくと思います。しかし、今の状態ではまだ“床”がありません。このままではCubeは永遠に落下し続けてしまいます。そこで、落下を確認するために図7のような床を作りましょう。

図7:Cubeが落下する床を作成する

ヒエラルキーウィンドウの上部にあるCreateをクリックして「3DObject」→「Cube」と選択し、インスペクターウィンドウでTransformの各値を図8のように設定します。

図8:インスペクターウィンドウで床のTransformを設定

この状態で再びPlayボタンを押してみましょう。上手くいけば、床の上にCubeが落下する様子を確認できます(図9)。

図9:床の上にCubeが落下する様子を確認できる

コライダーについて

次に、先ほどRigidbodyを付けたCubeを複製してみましょう。ヒエラルキービューのCubeを右クリックして「Copy」→「Paste」と選択します(図10)。Duplicateでも複製を行えます。

図10:Cubeの複製

コピーしたCubeは最初のCubeと同じ座標にあると思います。この状態であえて何も調整せずにPlayボタンを押して実行してみましょう。すると、Cubeが1つだったときとは違う挙動になります(図11)。

図11:Cubeを複製してPlayボタンをクリックすると異なる挙動になる

これには、コライダーコンポーネントが関係しています。インスペクターウィンドウで確認してみると「Box Collider」というComponentが付いていることがわかります(図12)。

図12:異なる挙動の原因はBox ColliderというComponentCubeが関係している

Box Colliderはゲームなどの当たり判定で利用されます。当たり判定がなければ、Rigidbodyを使用して重力による落下が行われても、床をすり抜けて落下し続けてしまいます。今回は2つのCubeの当たり判定が重なっていたため、挙動がおかしくなったのです。

では、きちんと真っすぐ落下するように、2つの位置を調整しましょう。床の上に落下すれば、どこに配置してもかまいません。ここでは図13のように位置を調整しました。

図13:2つとも真っすぐ落下するように位置を調整

床で跳ねるようにする

続いて、Cubeが床に当たった時に跳ねるようにしてみましょう。「Assets」→「Create」→「Physic Material」と選択します(図14)。

図14:Cubeが床に当たった時に跳ねるようにするための設定

これで新しくPhysic Materialが作成されるので、適当に名前を付けます。ここでは“Spring”という名前にしました。プロジェクトウィンドウでこのSpringを選択し、インスペクターウィンドウで確認してみます(図15)。

図15:"Spring"という名前でPhysic Materialを作成

ここでは、跳ねるCubeを作るために「Bounciness」を「1」に設定しましょう。Bouncinessは跳ね返り係数のことです。入力したらプロジェクトウィンドウから最初のCubeにドラッグ&ドロップ、もしくはCubeのInspectorの「Box Colider」→「Material」から設定します。

これでPlayボタンを押して実行してみましょう。上手くいけば片方のCubeのみが跳ね、もう片方のCubeはそのまま落下するような動作をします(図16)。

図16:片方のCubeは床で跳ね、もう一方がそのまま落下すれば成功

おわりに

いかがでしたか。今回解説したように、Unityではプログラムコードを書かなくても簡単な物理シミュレーションを行えます。ARのように現実を利用する表現のコンテンツには重要な項目なので、それぞれしっかりと覚えておきましょう。

次回は、ARで表示するキャラクターモデルを作成し、PC上で動かしてみたいと思います。

Mogura VR
MoguraVRのライター兼エンジニアを務めながら、XRコンテンツクリエイトチームであるMark-onの代表を務める。VR、AR、MRコンテンツに触れるだけではなく、イベントでの登壇や、自分でコンテンツも制作。VR、AR、MRの面白さ、楽しさを広める活動を積極的に行っている。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています