コンポーネントの型(どこにあるか・何と結びつけるか)
画面上で選択されているのは、色などの見た目を変える通常のマテリアルではなく、「Physics Material 2D」という、物理的な挙動(摩擦や跳ね返り)を設定するアイテムです。
- どこにあるのか?
画面下部の「Projectウィンドウ(Assets内)」に保存するファイルとして存在します。現在「BouncyMaterial」という名前で作成され、青くハイライトされていますね。 - 何と結び付けるのか?
シーン上に配置したオブジェクトの「Collider 2D(当たり判定)」または「Rigidbody 2D(物理挙動)」コンポーネントにある「Material」という項目に、このファイルをドラッグ&ドロップして紐付けます。
Physics Material 2D 機能の仕組み:全パターン徹底解説
物理マテリアル2Dには、「Friction(摩擦)」と「Bounciness(跳ね返り)」という2つの基本パラメータがあり、それぞれ 0 から 1 (設定上はそれ以上も可能ですが基本は1まで)の間で設定します。
① Friction(摩擦)の全パターン
摩擦は、オブジェクト同士が擦れ合うときの「滑りにくさ」を決定します。
- Friction = 0(摩擦ゼロ:完全な氷)
- 挙動: 摩擦が全くない状態です。斜面に置いたオブジェクトは、どれだけ緩やかな傾斜であっても氷の上のようにつるつると滑り落ちます。また、平らな床の上で横に力を加えると、空気抵抗や別の力が働かない限り、無限に滑り続けます。
- 用途: ブロック崩しのボール(壁に当たっても減速させない)、氷のステージの床、滑り台など。
- Friction = 0.5(中間:一般的な材質)
- 挙動: 適度な引っかかりがあります。斜面にある程度の傾きがあれば滑り落ちますが、緩やかな斜面なら途中で止まります。平らな床の上で転がしたり滑らせたりすると、徐々にブレーキがかかって停止します。
- 用途: 木箱、一般的な地面、キャラクターの足裏など、標準的なオブジェクト。
- Friction = 1(摩擦最大:ゴムや高粘着の床)
- 挙動: 非常に滑りにくくなります。斜面に置いても、かなりの急傾斜でなければその場にとどまります。動いているオブジェクトがこの床に触れると、強力なブレーキがかかったように急停止するか、摩擦によって激しく回転(ローリング)を始めます。
- 用途: 急坂で滑らせたくない床、高粘着な壁、キャタピラなど。
② Bounciness(跳ね返り)の全パターン
跳ね返りは、オブジェクトが衝突したときに、どれだけの運動エネルギーを維持(反発)するかを決定します。
- Bounciness = 0(跳ね返りゼロ:泥や粘土)
- 挙動: 衝突時のエネルギーが完全に吸収されます。高いところから床に落とすと、バウンドすることなく「ピタッ」と床に張り付くように止まります。
- 用途: 地面、重い岩、落ちた後に転がしたくないアイテム、キャラクター自身など。
- Bounciness = 0.5(中間:通常のボールやゴム)
- 挙動: 衝突すると、落ちた高さの約半分(※相手の設定による)まで跳ね返ります。バウンドするたびに高さがどんどん低くなり、最終的には床に転がって止まります。
- 用途: テニスボール、バスケットボール、バウンドするトラップなど。
- Bounciness = 1(完全反発:理想的なスーパーボール)
- 挙動: 衝突しても運動エネルギーが全く失われません。高いところから落とすと、理論上は元の高さと同じ位置まで跳ね返り、それが永久に繰り返されます。
- 用途: ブロック崩しのボール、ピンボールのバンパー、大ジャンプできるトランポリン床など。
③ Combine(接触したときの合成ルール)の仕組み
ゲーム内では、「ボール(マテリアルA)」が「床(マテリアルB)」に衝突します。このとき、「どちらの数値を採用するか」を決めるのが Friction Combine / Bounce Combine です。
設定には以下の4つがあります。
- Average(平均値)[デフォルト]
- 仕組み: (マテリアルAの数値 + マテリアルBの数値) ÷ 2
- 例: ボールのBouncinessが 1、床のBouncinessが 0 の場合、間を取って 0.5 の反発力になります。
- Minimum(最小値)
- 仕組み: AとBのうち、低い方の数値を採用する。
- 例: ボールが 1(めちゃくちゃ弾む)でも、床が 0(粘土)なら、結果は 0 になり、全く弾まなくなります。
- Maximum(最大値)
- 仕組み: AとBのうち、高い方の数値を採用する。
- 例: 床が 0(粘土)であっても、ボールが 1(スーパーボール)なら、結果は 1 になり、最大効率で弾みます。
- Multiply(乗算・掛け算)
- 仕組み: マテリアルAの数値 × マテリアルBの数値
- 例: 片方が 0 であれば、もう片方がどれだけ大きくても結果は必ず 0 になります。逆に、両方が 0.8 などであれば 0.64 になります。
活用例
剛体(Rigidbody)を使った物理演算を利用するゲームで、モノの材質を表現するのに必ず使われます。画面の構成(BallManagerやPaddleManager)からすると、以下のような用途に最適です。
- ブロック崩しのボール: まさに今回の画像の設定(Bouncinessが1、Frictionが0)です。壁やパドルに当たった後も減速せずに、一定のスピードで跳ね返り続ける理想的なボールを作れます。
- コイン落としゲームのピンや床: コインどうしが不自然に引っかからないようにFrictionを0にしたり、配置されたピンに当たった時に少しだけ散らばるように微量のBouncinessを設定したりして、リアルな動きを作ります。
- 滑る床のギミック: アクションゲームなどで、Frictionを0にしたマテリアルを地面のColliderに設定すると、キャラクターがツルツル滑る氷のエリアを簡単に作れます。
その他(実用的なテクニック)
- 跳ね返りすぎ(バグ)に注意: Bouncinessを1より大きくすると、ぶつかるたびにエネルギーが増幅して加速してしまい、最終的に壁をすり抜けるなど物理演算がおかしくなる原因になります。
- C#スクリプトからの動的変更: ゲームの途中でアイテムを取ったら弾むようになる、といった場合はスクリプトから設定を変えることも可能です。

コメント