
ども!カトサンラボのかとこうです。
Unityで2Dアクションゲームを作っていると、
プレイヤーがトゲや壁にくっついて
動けなくなる状態になることがあります。
この原因は摩擦力(フリクション)が
働いているからです。
今回はこの現象を改善するために、
プレイヤー用のマテリアルを作成し、
摩擦力を0にする設定方法を解説します!
▼ 動画での解説はこちら(1時間20分25分くらいから)
▶︎ 今回の作業内容

1. 新しいマテリアルを作成しよう
まずは、プレイヤー専用の「Physics Material 2D」を作成します。
完成図

Physics Material 2Dの作成手順
- Projectウィンドウで「Assets」を表示する
- プロジェクトウインドウの 「+」ボタン をクリック
- メニューから
2D > Physics Material 2D
を選択する
これで新しいマテリアルが作成されます。
2. マテリアルに名前をつけて保存しよう
作成されたマテリアルは初期状態で
「New Physics Material 2D」
という名前になっています。
わかりやすくするために名前を
「PlayerPhysicsMaterial2D」
に変更しました。
完成図

3. 摩擦力を「0」に設定しよう
次に、作成したマテリアルの
摩擦力(Friction)を0に設定しましょう。
完成図

摩擦力を0にする手順
- 作成したマテリアルをクリックしてインスペクターを表示する
- 「Friction」の値を
0
に設定する - 「Bounciness(跳ね返り)」はそのままでOK
これでプレイヤーにつける
「くっつき防止用」
のマテリアルが完成しました。
4. プレイヤーにマテリアルを設定しよう
次に、このマテリアルをプレイヤーに設定します。
完成図

プレイヤーへのマテリアル設定手順
- Hierarchyウィンドウで プレイヤーオブジェクト を選択する
- インスペクターの Box Collider 2D を探す
- 「Material」の欄に、先ほど作ったマテリアルをドラッグ&ドロップする
これで、摩擦力0のマテリアルが
プレイヤーに適用されました。
5. テストプレイで確認しよう
シーンビュー上部の「▶(プレイボタン)」を
クリックしてテストプレイをしましょう。

- トゲにぶつかったあとジャンプしてみる
- 以前は何回かジャンプしないと離れなかったのが、
今は一回のジャンプでスムーズに離れるはずです
▶︎ これで「くっつく」問題は解消されました!
まとめ
今回は、プレイヤーがトゲや壁に
くっつく現象を解消する方法として、
- Physics Material 2D を作成する
- 摩擦力(Friction)を 0 に設定する
- プレイヤーに設定する
という手順を行いました。
この設定は、壁ジャンプや
天井にくっつく問題の予防にもなります。
Unityで物理的な挙動を扱う際には、
マテリアルの設定は非常に重要なんですね。
という事で、今回の内容は以上となります。
ここまで読んでいただきありがとうございました!
次回予告:ゲームオーバー処理の実装へ
次のセクションでは、障害物のトゲにプレイヤーが
当たるとゲームオーバーになる処理を実装していきます。
お楽しみに!
▼ 次の記事はこちらから
→ Unityで2Dフラッピーバード風ゲームを作る方法その10:ゲームオーバーの処理を作成しよう
補足(初心者向け)
Unityでは、物理マテリアルと
見た目のマテリアルがあり、
それぞれ別物です。
今回扱った Physics Material 2D
は
「物理挙動の制御用」のマテリアルとなっています。