2Dゲームの物理でつまずくポイントは、だいたい決まっています。 キャラが着地の勢いで勝手に転ぶ。高速の弾が壁をすり抜ける。坂道や段差の角で引っかかる。——そしてこれらには全部、定番の直し方があります。
この記事では、2D物理の心臓部である Rigidbody2D と Collider2D の基本から、あるあるトラブルの対処、2Dプラットフォーマーの実装イディオムまでを解説します。
この記事でわかること
- 3Dとの違い——2D系コンポーネントは完全に別系統
Body Type(Dynamic/Kinematic/Static)の役割分担Collider2Dの使い分け——キャラにはCapsuleが定番の理由Is Triggerと衝突イベント(コイン取得・ダメージ判定)- あるあるトラブル3連発の直し方(転ぶ・すり抜ける・カクつく)
動作確認環境: Unity 6 (6000.x)
目次
Sponsored
3Dと2Dの物理は「別世界」
Unityには3D用(PhysX)と2D用(Box2D)、2つの独立した物理エンジンが載っています。RigidbodyとRigidbody2D、BoxColliderとBoxCollider2Dは名前が似ているだけの別物で、互いに一切干渉しません。
「Rigidbodyを付けたのにOnCollisionEnter2Dが呼ばれない」——2D初心者の詰まりどころナンバーワンは、3D用コンポーネントの混入です。2Dゲームでは末尾に2Dが付く系統だけを使ってください。
Rigidbody2Dを付けたオブジェクトは2D物理エンジンの管理下に入り、重力で落ち、力で動き、他のオブジェクトと衝突するようになります。3D版との違いは次の2点です。
- XY平面で完結: Z軸方向の移動はありません。
- 回転は
float1個: 3DのQuaternionと違い、Z軸周りの回転角度だけを扱います。
Body Type:役割で選ぶ3タイプ
Rigidbody2Dの挙動はBody Typeで大きく変わります。「誰がこのオブジェクトを動かすのか」 で選びます。
