ジャンプが出来るようになってキャラコントロールが出来るようになりましたが、現在のままだと少しだけおかしな動きになる部分があります。PhysicsMaterial(2D)というものを利用して調整しましょう。
壁との摩擦!?PhysicsMaterial2Dを調整しよう
現在の状態でキャラの挙動は問題ないでしょうか?実は少しだけ不自然な状態になっています。その部分を確認するには縦長ブロックを上に上げてみて壁に向かってキャラを押し付けてみるとすぐに分かります。
これは当たり判定ごとのPhysicsMaterial(2D)の影響によるものです。ここではこのサイドビューのアクションゲーム用のPhysicsMaterialを作ることで解消を狙いたいと思います。
PhysicsMaterial(2D)とは
そもそもPhysicsMaterialとは何でしょうか?
物理特性マテリアル は、衝突するオブジェクトの摩擦や跳ね返り効果を調整するのに使用されます。
https://docs.unity3d.com/ja/2019.4/Manual/class-PhysicMaterial.html
とあります。具体的に上げると
プロパティー | 機能 |
---|---|
Dynamic Friction 動摩擦係数 | 動いているものに対して発生する摩擦。 0ほど滑りやすく、1ほど粘っこい |
Static Friction 静摩擦係数 | 静止状態のオブジェクトに使用される摩擦係数。 滑り具合は動摩擦と同様。 止まっている箱にボールをぶつけたときにずれやすいかどうか |
Bounciness 反発係数 | 高いところからボールを落としたときにどのぐらい跳ね上がるか 1だともとの高さまで戻ってきて、0だとストンと止まる(跳ねない) |
FrictionCombine | 衝突するオブジェクト間の摩擦をどう処理するか |
BounceCombine | 衝突するオブジェクト間の反発係数をどう処理するか |
FrictionCombine/BounceCombineはそれぞれ以下の中から動作を選択します。またCombineは衝突するお互いに設定がされている場合優先度の高いものが選択されます。優先度は下の表の上ほど高く、下ほど低く設定されています。
Combineの種類 | 優先度 | 説明 |
---|---|---|
Maximum | 1(最優先) | 2つの摩擦力のうち大きい方が使用されます |
Multiply | 2 | 2つの摩擦力が互いに乗算される |
Minimum | 3 | 2つの摩擦力のうち小さい方が使用されます |
Average | 4 | 2つの摩擦力が平均化される |
PhysicsMaterial(2D)の作り方
PhysicsMaterial(2D)の作り方は3Dと2Dで異なります(Unity2020の場合)
- PhysicsMaterial : Create/PhysicsMaterial
- PhysicsMaterial2D : Create/2D/PhysicsMateirl2D
なおこんこんと説明を下にも関わらず2D 版のPhysicsMaterialにはConbineの設定はありません。特に説明もなかったので検証してみないとなんとも言えないですが、少なくとも片方につけている場合そちらが優先されてました。
2Dサイドビューのプレイヤーの設定と確認
PhysicsMaterialの理解が深まったところで、今回のゲーム用のPhysicsMaterial2Dの設定を行いたいと思います。
PhysicsMaterial2Dの作成とパラメータ
プレイヤーにはCupcelCollider2Dがついております。これに対応したPhysicsMaterialは2D版です。ということでPhysicsMaterial2Dを作成します。名前は「PlayerPhyisics」としましょう。
作成できたらPlayerPhysicsを選択してインスペクターの設定を下図に合わせてください。
滑りなし、跳ね返りなしの設定で行きます。
プレイヤーのCapsuleCollider2Dに適応
PhysicsMaterial2Dが作れたらプレイヤーにセットしましょう。
いざ動作確認
PhysicsMaterial2Dのセットが出来たらゲームを動かしてみて壁に押し付けてみましょう。スルスルと下がっていくようになればOK!
コメント