Unity 物理演算 Rigidbody 衝突(あたり)判定や重力について

2023年10月21日

スポンサーリンク

今回はUnityでゲームを作るにあたって、最も重要と言っても過言ではないコンポーネントであるRigidbody、そのうち特に質量や重力、衝突判定ついて解説していく。

   目次

Rigidbodyの追加方法

Rigidbodyの各パラメーターについて

 ↳mass, use gravity, Is Kinematic, collision ditectionについて

・・・

オブジェクトへのRigidbodyの追加方法

追加したいオブジェクトを選択し、inspectorビューの一番下のadd componentを選択。

・・・

スポンサーリンク

2Dプロジェクトの場合、Physics 2D → Rigidbody 2D

3Dプロジェクトの場合、Physics → Rigidbody

スポンサーリンク

すると、下画像の様になります

このうちよく使用するパラメーターに関して説明をします。

Mass

質量を表しています。この値を大きくするほど、摩擦力や終端速度が大きくなり、力が働いたときに加速しにくくなります(例:ピンポン玉とボーリングの玉を同じ力で押すとピンポン玉の方が早く移動する)。自由落下速度は変わりません。

・・・

Use Gravity

チェックを入れると重力の影響を受けるようになる。

 ↳重力加速度の変更方法

画面左上のedit → project settings → Physics or Physics 2D → gravity のx,y,zを変更。

スポンサーリンク

初期値は、x,y,z=0,-9.81,0 となっており、現実世界と同じになっている。

・・・

Is Kinematic

チェックを入れるとaddForceや重力の影響を受けなくなる。基本的に力の影響を受けてほしくない場合はそもそもRigidbodyを追加しない事が多い。ただし、力の影響を受けてほしくないが衝突判定は欲しいという場合、Rigidbodyを追加し、Is Kinematic にチェックを入れる。

Collision Detected

衝突判定に関する設定。4つの選択肢があるが、Discreteを採用することが多い。Discreteは連続的に衝突判定を行うのではなく、一定時間間隔断続的にで衝突判定を行うため、処理が軽いが判定を行っていないタイミングがある為、超高速で動くオブジェクトの衝突判定を見逃す可能性があります。continuousは、衝突する相手にcollider(当たり判定を持たせたり、その範囲を調節できる)が存在するが、Rigidbodyをもたない場合にのみ衝突判定を行います。continuous Dynamic は衝突相手がcolliderもしくはRigidbody(Discrete以外)も持つ場合に衝突判定を行います。continuous speculative はcontinuous Dynamic より処理が軽いが、ぶつかりそうになったタイミングで衝突判定を行うことがあります。これらは、衝突判定を検知したタイミングで{}内を実行する関数(is triggerなど)と一緒に使われることが多いです。

衝突判定時に呼び出される関数については、下の記事を参照

Unity公式ユーザーマニュアル(物理演算)へのリンク

他の記事

Unity シューティングゲーム プレイヤー移動と弾の実装・生成[コピペOK](所要時間5分)

スポンサーリンク