【Unity】Physics Materialとは?摩擦や跳ね返りを設定できる

Physics Material Unity

こんにちは、ともくんのゲーム作り部屋にようこそ!

このページでは、

「UnityのPhysics Materialってなに?」

「Physics Materialをどうやって使えばいいの?」

というお悩みの方に向けた内容となっています。

Unityでは、オブジェクトに対して摩擦をかけたり、跳ね返らせる挙動を作る際に、Physics Materialというものを使います。

Physics Materialとは物理的な材質のことで、

を設定できる項目のことで、当たり判定の範囲を決めるColliderコンポーネントに紐づけて使用します。

このPhysics Materialを使うことで、

などができるようになります。

そこで、このページでは、Unityで使えるPhysics Materialについて、特徴や仕様、使い方や設定項目までをまとめていきます。

この記事を書いた人

ゲーム作りを学び始めた一児のパパです。
このブログは、子供から「ゲームを作ってみたい!」と言われ、非プログラマーでゲーム作りをしたことない僕が、ゲーム作りの本を読んで独学でゲーム開発を学んでいるブログです。
同じように初めてゲーム作りをしている方と一緒に学んでいけるようなブログに出来たらいいなと思っています。
また、「このコードはおかしい」とか「もっと良い書き方があるよ!」などあれば、どんどん指摘して頂けると助かります。

Physics Materialとは?摩擦や跳ね返りを調整できる

冒頭でも解説した通り、Physics Materialとは、オブジェクトが衝突した際の摩擦や跳ね返りを調整することができる機能です。

摩擦は、オブジェクト同士が接触した状態で動く場合に、その動きを妨げるように作用する力のことで、摩擦係数によってその効果を設定できます。

例えば、床の上でオブジェクトが動いている場合、

といったように、オブジェクトの材質に合わせて、接触しているオブジェクトへの摩擦を変化させることができます。

また、跳ね返りはオブジェクト同士が接触した際に、どの程度跳ね返るかといった弾力性を調整することができます。

例えば、ボールを高いところから落としたときに、

といったように、オブジェクトの材質に合わせて、跳ね返り度合いを変化させることができます。

Physics Materialは、これらのようにオブジェクトに対して摩擦や跳ね返りの挙動を調整する場合に使用します。

Physics Materialの使い方

ここからは、Physics Materialの使い方についてまとめていきます。

Physics Materialを使う場合の流れとしては、Physics Materialに摩擦係数や弾力性などを設定して、それをオブジェクトのColliderコンポーネントに紐づけることで、オブジェクトが衝突している場合の動きを調整していくことになります。

オブジェクトにRigidbodyとColliderを付ける

まず、Physics Materialを使用する場合は、オブジェクトに物理演算機能と衝突させる機能を付けておく必要があるため、RigidbodyコンポーネントColliderコンポーネントを付けておきます。

Rigidbodyは、重力などの物理的な動きを行えるようにするコンポーネントです。

Rigidbodyを付ける際は、オブジェクトを選択してインスペクターウィンドウから「AddComponent」をクリックして、

  • 3Dゲームの場合は「Physics」「Rigidbody」
  • 2Dゲームの場合は「Physics2D」「Rigidbody2D」

を選択します。

また、Colliderは、オブジェクトが衝突する範囲を決めることができるコンポーネントです。

Colliderを付ける場合も、インスペクターウィンドウの「AddComponent」をクリックして、

3Dゲームの場合は「Physics」の中から、2Dゲームの場合は「Physics2D」の中から、オブジェクトの形に合わせてColliderコンポーネントを選択し設定します。

Physics Materialを作成する

次に、「Physics Material」をプロジェクトウィンドウの+ボタンから作成していきます。

3Dで作成する場合は、一覧から「Physics Material」を選択します。

2Dで作成する場合は、「2D」の中から「Physics Material 2D」を選択します。

すると、アセットフォルダ内にPhysics Materialのファイルが作成されるので、名前を変えておきましょう。

このPhysics Materialを選択すると、インスペクターウィンドウにそれぞれの設定項目が表示されるので、変更して摩擦や跳ね返りを調整していきます。

設定項目説明
Dynamic Friction動いているオブジェクトへの摩擦係数
Static Friction止まっているオブジェクトへの摩擦係数
Friction2Dのみで使用する摩擦係数
Bouncinessオブジェクトの弾性
Friction Combineオブジェクト間の摩擦係数の処理
Bounce Combineオブジェクト間の跳ね返り度合いの処理

設定項目については、後ほど細かく解説しています。

ColliderにPhysics Materialを紐づける

Physics Materialを設定できたら、オブジェクトに紐づけたColliderコンポーネントにアタッチしていきます。

オブジェクトを選択して、インスペクターウィンドウからColliderコンポーネント「Material」の項目を探します。

このMaterialに、先ほど設定したPhysics Materialドラッグ&ドロップするか、選択してあげることで、Physics Materialを紐づけることができます。

これで、このColliderコンポーネントの材質が物理的材質に変わり、衝突した際に設定した値に基づいて計算され、摩擦や跳ね返りの作用が決まることになります。

なお、直接Physics Materialをオブジェクトにドラッグ&ドロップすることでも、紐づけできます。

Physics Materialの設定項目

ここからは、Physics Materialに設定できる項目について、それぞれ紹介していきます。

なお、3DのPhysics Material(左)と2DのPhysics Material 2D(右)では設定項目が異なっています。

Dynamic Friction(3D):動いているオブジェクトへの摩擦

Dynamic Frictionは、動いているオブジェクトに対してかかる摩擦係数を決めている項目です。

このDynamic Frictionが、「0」だと摩擦がかからないのでオブジェクトが止まらず、「1」だと摩擦が大きいのでオブジェクトがすぐに止まることになります。

Static Friction(3D):止まっているオブジェクトへの摩擦

Static Frictionは、止まっているオブジェクトが動き始める際にかかる摩擦係数を決めている項目です。

このStatic Frictionが、「0」だと摩擦がかからないのでオブジェクトがすぐに動き始め、「1」だと摩擦が強いので大きな力を与えない限りオブジェクトは動きません。

Friction(2D):2Dにおける摩擦係数を決める

Frictionは、Physics Material 2Dでのみ使用できる設定で、オブジェクトに対してかかる摩擦係数を設定できる項目です。

このFrictionが、「0」だとオブジェクトに摩擦はかからないので、動きやすく止まりにくい動きをして、「1」だとオブジェクトに大きな摩擦がかかるので、大きな力を与えない限り動きにくく止まりやすいです。

Bounciness(2D/3D):オブジェクトの弾性を決める

Bouncinessは、オブジェクトが衝突した際にどのくらい跳ね返るようにするか弾性を決めている項目です。

このBouncinessが、「0」の場合は弾性が無いためオブジェクトは跳ね返らず、「1」の場合はオブジェクトに衝突した際にかかっている力を、そのまま跳ね返らせるようにします。

Friction Combine(2D/3D):オブジェクト間の摩擦係数の処理

Friction Combineは、2つのオブジェクト間の摩擦係数についての処理を決める設定で、以下の4つから選択することができます。

Friction Combine説明
Average2つのオブジェクトの摩擦力が平均化されて作用する。
Minimum2つのオブジェクトの摩擦力のうち小さい方の値で作用する。
Maximum2つのオブジェクトの摩擦力のうち大きい方の値で作用する。
Multiply2つのオブジェクトの摩擦力が乗算されて作用する。

Bounce Combine(2D/3D):オブジェクト間の跳ね返り度合いの処理

Bounce Combineは、2つのオブジェクト間の跳ね返り度合いについての処理を決める設定で、以下の4つから選択することができます。

Bounce Combine説明
Average2つのオブジェクトの跳ね返り度合いが平均化されて作用する。
Minimum2つのオブジェクトの跳ね返り度合いのうち小さい方の値で作用する。
Maximum2つのオブジェクトの跳ね返り度合いのうち大きい方の値で作用する。
Multiply2つのオブジェクトの跳ね返り度合いが乗算されて作用する。

まとめ

このページでは、Unityで使えるPhysics Materialについて、どんな機能なのか、また使い方や設定項目についてまとめていきましたが、いかがでしたでしょうか?

Physics Materialとは、オブジェクトにおける摩擦や跳ね返りに対しての力を決めることができる項目です。

Physics Materialを使う場合は、オブジェクトにRigidbodyColliderのコンポーネントを付けて、Physics MaterialをColliderにアタッチする形で使います。

Physics Materialを使えば、

のようなものも簡単に作ることができます。

最後までお読みいただきまして、ありがとうございました!

コメント