Unityでの物理演算
物理演算(Physics
)とは、現実における物理的な動き(重力、衝突、摩擦など)をゲーム内で再現するための仕組みです。
Unity
には物理演算エンジンが組み込まれており、シーン上のオブジェクトに対して物理的な動作を簡単に追加できます。
物理演算用の基本的なコンポーネント
Rigidbody
Rigidbody
は、オブジェクトに物理演算を適用するためのコンポーネントです。
追加すると重力の影響を受けて落下したり、衝突時に力を加えることができます。
ヒエラルキー上で 3D オブジェクトを追加した場合、デフォルトではRigidbody
を持たないため、後から追加する必要があります。
例えば、Plane
を配置し、その上空にCube
を追加してCube
にRigidbody
コンポーネントを追加すると、
実行時にCube
が落下するようになります。
2Dの場合は、Rigidbody2D
コンポーネントを追加します。
Collider
Collider
は、物理的な衝突判定を行うコンポーネントです。
BoxCollider
、SphereCollider
、CapsuleCollider
など、形状に応じたコライダーが用意されています。
ヒエラルキー上で 3D オブジェクトを追加すると、デフォルトでCollider
がアタッチされています。
Rigidbody
のみでCollider
がない場合、オブジェクトは他のオブジェクトをすり抜けてしまいます。
2Dの場合は、2D用のCollider
コンポーネントを追加します。
Physics Material(物理マテリアル)
物理演算の摩擦や跳ね返りを設定するためのマテリアルです。
UnityEditor のメニューから、Assets → Create → Physics Material
を選択することで、Physics Material
を作成できます。
例えば、Bounciness
(跳ね返り具合)を1
に設定し、Physics Material
をCube
のCollider
に適用します。
地面に衝突した後跳ね返るようになります。
PhysicsMaterial
にもPhysicsMaterial2D
があります。
注意する点
Collider
にはMeshCollider
もあります。
これは 3D モデルの形状に合わせてコライダーを生成するものですが、
形状が複雑になると衝突判定の計算負荷も増加します。
見た目通りに厳密に判定する必要が無ければ、球やボックス、カプセルで大まかな形状にするとよいでしょう。
まとめ
今回は物理演算の基本的な設定について説明した。
特にコードを書かなくても簡単に物理演算を実装できます。
もちろんゲームに取り込むためにはルールに沿った形で調整する必要があります。
今後はオブジェクトへの力の加え方、衝突時のイベントの実装方法などを見ていきたいと思います。