こんにちは、新人エンジニアのひっしーです。
皆さんUnityには触れておりますでしょうか?
今回はUnityの物理演算機能「Rigidbody」についてみていきましょう。
今回の目次です。
- Rigidbodyとは、
- Rigidbodyを設定する
- Rigidbodyを使って球を転がしてみる
- まとめ
Rigidbodyとは、
こちらは、Unityの公式サイトで説明されている内容です。
Rigidbody を使うと、ゲームオブジェクト を物理特性によって制御する事ができるようになります。リジッドボディに力やトルクを加えると、オブジェクトをリアリスティックに動かすことができます。重力の影響を加えたり、スクリプトを使って力を与えたり、NVIDIA PhysX 物理エンジンを通して他のオブジェクトと相互作用させるためには、ゲームオブジェクトにリジッドボディを加える必要があります。
参照 https://docs.unity3d.com/ja/2018.4/Manual/class-Rigidbody.html
上記の説明は多少難しい表現もありますが、Rigidbodyを使うと現実の物理現象に近いものを再現できると覚えて大丈夫です。
物理演算を自分で再現しようとすると物理を深く熟知していないと困難です。(私は物理学がそれほど得意ではありませんでした。。。)
しかし、この機能を使うとUnityが勝手に処理してくれるので簡単に物理現象を再現できます。
では、実際に使い方を見ていきましょう。
Rigidbodyを設定する
Rigidbodyを設定するためには、物理現象を再現したいオブジェクトを用意する必要があります。
ヒエラルキービューからSphereを作成しましょう。
Unity画面名称とオブジェクトの作成がわからないという方は、私の記事で以前紹介しましたので、そちらもご確認ください。
新人エンジニアがゲーム開発エンジンUnityを使ってみた2【エディタ画面解説】
新人エンジニアがゲーム開発エンジンUnityを使ってみた3【オブジェクトの配置と操作】
Sphereが作成出来たら、まずこれだけでは物理現象が無いことを確認するためにUnity画面の中央上付近にある再生ボタンを押してみましょう。
この再生ボタンは、ゲームを実際にプレイするとどういう動きになるのかをゲームビューで確認できる機能です。
すると、今はSphereに何も役割を与えていないので画面に変化はないですがこれが正しいです。
ではRibidbodyを加えてみましょう。
Sphereをクリックしインスペクタービューの下にある[Add Component]というボタンをクリックします。
すると、リストが表示されるので検索バーにRigidbodyと入力して出てきた項目を追加してください。
すると、SphereのインスペクタービューにRigidboryという項目が追加されました。
これでSphereを物理現象を再現できる球体に設定できました。
では、もう一度Unityの再生ボタンをクリックして動きを見てみましょう。
すると、先ほどは止まっていた球体が下に落ちていくことがわかります。
つまり球体に重さが付いて重力の影響で下に落ちていったのです。
この処理を自力で行おうとすると計算がとても大変ですが、Unityではこれだけ簡単に実践することが出来るのです。
Rigidbodyを使って球を転がしてみる
Rigidbodyでものに重さがついて重力が働いたことはわかりました。
ですが、これだけだと下に落ちる姿しか見れないので物理現象がどのように表現されているのかわかりにくいかと思います。
そこで、滑り台を作って球を転がしてみましょう。
球を転がすには転がすための台座が必要になります。
今回はCubeを使って台座を作ります。
ヒエラルキービューからCube1とCube2を作成してください。
作成出来たらインスペクタービューからCube1とCube2のTransform設定を以下のように変更します。
ここまで出来たらSphereの位置も調整しましょう。
ちゃんと滑り台の上にくるようにPositionを変更しましょう。
以下の画像を参考に変更してください。
すると、ゲームビューに水平の板と斜めの板の上に球体がいるような表示になります。
この状態でUnityの再生ボタンを再びクリックしてみましょう。
すると斜めの板の上を球が転がり水平の板に着地した後も転がり続けて落ちてしまうことを確認できます。
つまり、斜めの板の上を転がった時に球が得た加速度を保ったまま水平の板に着地し余力でさらに進み続けたんですね。
このように複雑な物理現象をRigidbodyを使うことで簡単に再現できます。
まとめ
ここまで、Unityの物理演算 Rigidbodyについて紹介しました。
操作は簡単でしたが理屈が難しい内容となってしまったので、今は次の内容をを覚えてもらえると幸いです。
・物理的な動きを再現したいときにはRigidbodyを使用する
・物理演算させたいオブジェクトに[Add Component]でRigidbodyを追加する
Rigidbodyを使用すれば、例で挙げた滑り台を応用してピタゴラスイッチのような動きを再現することも難しくありません。
皆さんもUnityの操作に慣れるついでに是非試してみてはいかがでしょうか。
Rigidbodyにはまだまだいろいろな機能がありますので、興味のある方はUnityの公式マニュアルなどを学習するのもおすすめです。
理解を深めることで自分の用途に適した使い方が見えてくるかもしれません。
今回で物体がUnity内で動く場面を紹介できました。
どんどん、ゲームの動きに近づいてきていますのでここから楽しくなってくるターンですね。
このままの勢いで進んでいきましょう。
(Written by ひっしー)