Unityでの物理演算

物理演算(Physics)とは、現実における物理的な動き(重力、衝突、摩擦など)をゲーム内で再現するための仕組みです。

Unityには物理演算エンジンが組み込まれており、シーン上のオブジェクトに対して物理的な動作を簡単に追加できます。

物理演算用の基本的なコンポーネント

Rigidbody

Rigidbodyは、オブジェクトに物理演算を適用するためのコンポーネントです。

追加すると重力の影響を受けて落下したり、衝突時に力を加えることができます。

ヒエラルキー上で 3D オブジェクトを追加した場合、デフォルトではRigidbodyを持たないため、後から追加する必要があります。

例えば、Planeを配置し、その上空にCubeを追加してCubeRigidbodyコンポーネントを追加すると、

実行時にCubeが落下するようになります。

2Dの場合は、Rigidbody2Dコンポーネントを追加します。

Collider

Colliderは、物理的な衝突判定を行うコンポーネントです。

BoxColliderSphereColliderCapsuleColliderなど、形状に応じたコライダーが用意されています。

ヒエラルキー上で 3D オブジェクトを追加すると、デフォルトでColliderがアタッチされています。

RigidbodyのみでColliderがない場合、オブジェクトは他のオブジェクトをすり抜けてしまいます。

2Dの場合は、2D用のColliderコンポーネントを追加します。

Physics Material(物理マテリアル)

物理演算の摩擦や跳ね返りを設定するためのマテリアルです。

UnityEditor のメニューから、Assets → Create → Physics Materialを選択することで、Physics Materialを作成できます。

例えば、Bounciness(跳ね返り具合)を1に設定し、Physics MaterialCubeColliderに適用します。

地面に衝突した後跳ね返るようになります。

PhysicsMaterialにもPhysicsMaterial2Dがあります。

注意する点

ColliderにはMeshColliderもあります。

これは 3D モデルの形状に合わせてコライダーを生成するものですが、

形状が複雑になると衝突判定の計算負荷も増加します。

見た目通りに厳密に判定する必要が無ければ、球やボックス、カプセルで大まかな形状にするとよいでしょう。

まとめ

今回は物理演算の基本的な設定について説明した。

特にコードを書かなくても簡単に物理演算を実装できます。

もちろんゲームに取り込むためにはルールに沿った形で調整する必要があります。

今後はオブジェクトへの力の加え方、衝突時のイベントの実装方法などを見ていきたいと思います。

🗒️次の記事

🔗関連ページ