Version: 2023.1
言語: 日本語
Rigidbody 2D
Rigidbody 2D のボディタイプ

Rigidbody 2D とは

ゲームオブジェクトに Rigidbody 2D コンポーネントをアタッチすると、そのゲームオブジェクトを物理演算システムで制御することができます。Rigidbody 2D は、標準の Rigidbody と同じようなプロパティを持っていますが、2D 開発用に適応されています。例えば、Rigidbody 2D コンポーネントがアタッチされたゲームオブジェクトは、XY 平面に沿ってのみ移動でき、XY 平面に対して垂直な軸でのみ回転できます。

Rigidbody 2D の動作

Unity エディターの Transform コンポーネントは、ゲームオブジェクト (およびその子ゲームオブジェクト) をシーン内でどのように配置、回転、スケールするかを定義します。このコンポーネントを変更すると、他のコンポーネントが更新され、それがレンダリングされる場所や他のコライダーの位置に影響を与えます。Unity の 2D 物理演算システムは、コライダーを動かし、コライダー同士を相互に作用させることができます。このために Unity は、物理演算システムがコライダーの動きを Transform コンポーネントに伝え返すための方法を必要とします。Rigidbody 2D コンポーネントは、コライダーに関わるこの動きと接続のために存在します。Rigidbody 2D コンポーネントは、Transform コンポーネントをオーバーライドして、位置や角度を Rigidbody 2D コンポーネントの定義するものに更新します。

ノート: Transform コンポーネントを直接修正して Rigidbody 2D をオーバーライドすることも可能です (Unity は全てのコンポーネントの全てのプロパティを公開しているため)。ただし、この場合、予測できない動きが発生したり、ゲームオブジェクト同士が互いを貫通するなどの問題が発生します。

Collider 2D と Rigidbody 2D のインタラクション

同じゲームオブジェクトや子ゲームオブジェクトに加えた全ての Collider 2D コンポーネントは、その Rigidbody 2D ゲームオブジェクトに暗示的にアタッチされるため、Rigidbody 2D が動くと Collider 2D も一緒に動きます。アタッチされている Collider 2D を Transform やコライダーオフセットを使用して直接動かすことはせず、代わりに Rigidbody 2D を動かしてください。Rigidbody 2D を動かすことで、最良のパフォーマンスが得られ、正しい衝突判定が可能になります。同じ Rigidbody 2D にアタッチされた Collider 2D 同士は互いに衝突しません。つまり、1 つの合成コライダーとして効率的に動く一式のコライダー (全てのコライダーが Rigidbody 2D と同期して移動/回転する) を作成することが可能です。

Rigidbody 2D を追加すると、スクリプティング API から力を適用することによってスプライトの動きを物理的にリアリスティックなものにできます。適切なコライダーコンポーネントがアタッチされたスプライトゲームオブジェクトは、他の動くゲームオブジェクトとの衝突の影響を受けます。Unity の物理演算システムを使用することで、多くの一般的なゲームプレイメカニクスが単純化され、最小限のコーディングでリアルな動作表現が可能になります。

ノート: Rigidbody 2D は互いに衝突するものとして一般的に説明されますが、実際に衝突するのは各ボディにアタッチされた Collider 2D です。Rigidbody 2D はコライダーがなければ互いに衝突できません。

その他の参考資料

Rigidbody2D

Rigidbody 2D
Rigidbody 2D のボディタイプ