Physicsとは?
オブジェクトを物理的な挙動にしたがって、エミュレートさせることができるUnityの標準ライブラリの一つです。
オブジェクトの「質量」、「形」、「大きさ」や、「摩擦係数」、「重力」を考慮して、動きを計算してくれます。
「物理の力学」と聞くと、多くの方が難しそうと身構えるかもしれませんが、この物理エンジンがその難しい部分を覆い隠してくれるので、特に物理の専門知識がなくても簡単にプログラミングすることが可能なのです。
Physicsの構成要素
下記の二つから構成されます。
- Rigidbodyコンポーネント
- Colliderコンポーネント
Rigidbodyコンポーネント(Rigidbody 2D)
物体に働く、「重力や摩擦等の計算」を担当します。
設定値
項目 | 説明 |
---|---|
Gravity Scale | 重力の影響をどれくらい受けるかの値。(「1」にすると地球上と同じ重力を受ける。「0」にすると重力の影響を受けないので、静的なオブジェクトを作る場合は0にする。) |
Body Type | 物体のタイプを指定します。Dynamic(物理演算で移動)、Kinematic(スクリプトで動かす場合)、Static(動かさない物体の場合)から選択します。 |
Material | 素材の特性(摩擦力、反発力)を指定します。 |
Simulated | 物理演算と衝突判定のオンオフを切り替えます。 |
Use Auto Mass | オンにすると、コライダーの形状から質量を自動的に算出します。 |
Mass | オブジェクトの質量を指定します。大きな物体を動かすのにも、止めるのにも大きな力が必要になります。 |
Linear Drag | 移動の減衰値、値を大きくすると徐々に減衰します。 |
Angular Drag | 回転の減衰値、値を大きくすると徐々に減衰します。 |
Collision Detection | 他のオブジェクトとの衝突検知の方法 |
Sleeping Mode | スリープ設定になります。「Never Sleep(スリープ無効)」、「Start Sleep(起動は起きた状態、動かなければスリープ)」、「Start ASleep(初期状態スリープ、衝突によりスリープする。)」 |
Interpolate | スムージングの設定、処理の重さ等が原因で動きがぎこちなくなることを利用します。 |
Constraints | 移動、回転制限、「X」か「Y」をオンにするとそのオブジェクトは縦か横かしか移動しなくなります。「Z」をオンにすると、そのオブジェクトは移動しても回転しなくなります。 |
Collider(コライダ)コンポーネント
物体への「当たり判定」を担当します。当たり判定の種類によって、色々コンポーネントが分かれています。
コライダの種類 | 説明 |
---|---|
Circle Collider 2D | 円形の当たり判定を生成します。 |
Box Collider 2D | 四角形の当たり判定を生成します。 |
Edge Collider 2D | 線形の当たり判定を生成します。 |
Polygon Collider 2D | 多角形の当たり判定を生成します。オブジェクトにフィットする複雑なあたり判定を生成できます。 |
「Circle Collider 2D」の設定値
項目 | 説明 |
---|---|
Radius | 円の半径を指定します。 |
Physicsの用途
「Colliderコンポーネント」の機能によって、物体の当たり判定を自動で行ってくれるので、「アクションゲーム」や、「シューティングゲーム」等に活用することができます。
Physicsの落とし穴
単純な物理法則に沿った動作ならよいのですが、少し複雑な動作を実装しようとすると、Physicsでは物足りなくなる可能性があります。
まずは、Physicsを試してみてもよいですが、ダメであれば物理法則部分のロジックは自作するようにしましょう。
この記事へのコメントはありません。