PR

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のWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

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