CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Unity】リジッドボディの設定方法まとめ!
こんにちは!コチラの記事では、リジッドボディについての解説や、リジッドボディを取得して移動・回転・停止をさせる方法についてなどをまとめて解説していきます。
リジッドボディとは
リジッドボディ( Rigid Body )は、ゲームオブジェクトに設定することによって、ゲームオブジェクトが物理的な動きをすることができるようになるコンポーネントです。
リジッドボディ( Rigid Body )を設定することによって、重力・質量・抵抗などの物理演算を行うことが可能になります。
リジッドボディの設定方法
Inspector → Add Component → 検索窓から検索をして「 Rigid Body 」を選択することでリジッドボディを設定することができます。
リジッドボディの各項目について
以下リジッドボディの各項目について簡単に説明します。
Mass | 物体の質量(単位:Kg)を設定することができます。 |
Drag | オブジェクトが動いたときの空気抵抗の大きさを設定できます。 |
Angular Drag | オブジェクトが回転したときの空気抵抗の大きさを設定できます。 |
Use Gravity | 重力の影響を受けるかどうかを設定することができます。 |
Is Kinematic | リジッドボディの影響を受けるかどうかを設定することができます。 |
Interpolate | 動きがぎこちないときに動きを滑らかに補完する設定をすることができます。 |
Collision Detection | 衝突の検知方法を設定することができます。 |
Constraints | リジッドボディの動きに関して座標を固定させることができます。 |
それではよく調整される Mass と Drag について、数値を変更した場合の変化を以下紹介します。
Mass
よく調整される Mass の数値をデフォルトの数値から大きくなるように設定してみました。
デフォルトの数値だと以下のような動きをします。
数値を大きく調整すると、質量が大きくなり軌道が小さくなります。
Drag
Drag の数値を設定してみました。
デフォルトでは0になっているため空気抵抗の力は働きませんが、数値を入力したことによって空気抵抗が加わり、空気抵抗のあるボールのほうがゆっくりと落下します。
リジッドボディ2Dとは
リジッドボディ2Dとは、2Dのゲームオブジェクトが物理的な動きをすることができるようになるコンポーネントです。
Inspector → Add Component → 検索窓から検索をして「 Rigid Body 2D 」を選択することで、ゲームオブジェクトに リジッドボディを設定することができます。
上記は、Rigid Body 2D の Inspector の項目です。
1番上にある「Body Type 」は、Rigid Body 2D 特有の項目になります。
- Dynamic … 物理演算の影響を受ける。
- Kinematic … 物理演算の影響を受けない。
- Static … 物理演算の影響を受けない。
どちらも物理演算の影響を受けない Kinematic と Static ですが、これらには違いがあります。
Kinematic ではスクリプトを使用してゲームオブジェクトを移動させたり回転させたりできますが、Static ではスクリプトを使用しても、移動させたり回転させることができません。
Static は、Kinematic と異なり、「完全に動かない(物理演算の影響を受けない)状態」といえます。
リジッドボディで当たり判定を設定する方法
リジッドボディで当たり判定を設定するには、まず当たり判定をつけたい Game Object の両方に、 Collider の設定をしましょう。
Collider の設定ができたら、当たり判定をつけたい Game Object のいずれか一方に、Inspector → Add Component → 検索窓から検索をして「 Rigid Body 」を設定します。
当たり判定を設定する詳しい方法は、以下の記事の「 Collider で当たり判定をつけるには? 」という項目で詳しく解説していますので、あわせてご確認ください!
リジッドボディで重力を設定する方法
Game Object に、Inspector → Add Component → 検索窓から検索をして「 Rigid Body 」を設定することによって、ゲームオブジェクトに重力を設定することができます。
重力の設定についての詳細や、重力の設定において発生する問題について、以下の記事で詳しく解説していますので、こちらもご確認ください!
リジッドボディを取得して移動・回転・停止をさせるには
それではリジッドボディを取得して、ゲームオブジェクトを移動・回転・停止させる方法を解説していきます。
移動させるには
Inspector → Add Component → 検索窓から検索をして「 Rigid Body 」を設定します。
スクリプトに関して、以下の記事を参考にしました!
スクリプトの内容に関しても詳しく解説されていますので、あわせて確認してみてください!
回転させるには
回転させたいゲームオブジェクトにリジッドボディのコンポーネントを追加し、スクリプトを適用させることで回転させることができます。
手順は、前項で説明したゲームオブジェクトを移動させるときと同じになります。
- リジッドボディのコンポーネントを追加
- スクリプトを作成
- スクリプトを適用させる
スクリプトに関しては、以下のサイトに分かり易く記載されていましたので、ぜひ参考にしてみてください。
停止させる・動かないようにするには
停止させたいゲームオブジェクトにリジッドボディのコンポーネントを追加し、スクリプトを適用させることで停止させることができます。
コチラの手順も、前々項で説明したゲームオブジェクトを移動させるときと同じになりますので、同じ手順で適用させてみてください!
- リジッドボディのコンポーネントを追加
- スクリプトを作成
- スクリプトを適用させる
停止させる・動かないようにするスクリプトに関しては、以下のサイトに分かり易く記載されていましたので、ぜひ参考にしてみてください。
キネマティックでリジッドボディの影響をなくす方法
Rigid Body の Inspector にある「 Is Kinematic 」という項目のチェックを入れることで、リジッドボディの影響をなくすことができます。
前項の「停止させる・動かないようにするには」で使用したスクリプト内で、この「 Is Kinematic 」が使用されています。
スクリプト内でこのキネマティックのチェックを外したり、チェックを入れたりできるようにして、ゲーム内で、ゲームオブジェクトを停止させたり、動かしたりしています。
- 「 Is Kinematic 」が「 true 」のときは、リジッドボディの影響を受けずに停止する。
- 「 Is Kinematic 」が「false 」のときは、リジッドボディの影響を受けて動く。
おすすめのアセット
それではコチラの項目で、おすすめのアセットを紹介します!
Bullet Physics For Unity
コチラのアセットでは、以下の動画のように布や紙などの柔らかい質感の動きを表現することができます!
このような動きのシミュレーションを無料アセットで表現することができるので、おすすめです。
まとめ
- リジッドボディ( Rigid Body )は、ゲームオブジェクトに設定することによって、ゲームオブジェクトが物理的な動きをすることができるようになるコンポーネントである。
- リジッドボディ2Dとは、2Dのゲームオブジェクトが物理的な動きをすることができるようになるコンポーネントである。
- リジッドボディ2Dは、Inspector → Add Component → 検索窓から検索をして「 Rigid Body 2D 」を選択して設定することができる。
- リジッドボディによって当たり判定を設定するには、Collider の設定と Rigid Body の設定をする必要がある。
- 「 Rigid Body 」を設定することによって、ゲームオブジェクトに重力を設定することができる。
- リジッドボディを取得して、ゲームオブジェクトを移動・回転・停止させるには、Rigid Body を設定し、スクリプトをゲームオブジェクトに適用させる必要がある。
- Rigid Body の Inspector にある「 Is Kinematic 」という項目のチェックを入れることで、リジッドボディの影響をなくすことができる。