今回はUnityで床や壁の「摩擦」、「跳ね返り」を実装していきます。
はじめに
「Unity 2020.3.26f1」ヴァージョンで作成しています。
2Dゲームを例としているので、「PhysicsMaterial2D」を使っていきます。
実装開始
まずは簡単に画面作成。
「2Dオブジェクト」→「スプライト」→「円」を追加。

「Rigidbody2D」と「CircleCollider2D」をアタッチ。

この状態で「再生(実行)」すると円が落ちていくので、床を作成。
「2Dオブジェクト」→「スプライト」→「正方形」を追加。

スケールと色を変更して、BoxCollider2Dをアタッチ。


この状態で再生するとボールが落ちていき、床で止まります。下記の様な感じですね。

跳ね返り
床にボールが落ちてきたら、跳ね返るようにします。トランポリンのようなイメージですね。
プロジェクトのAssetsフォルダ内で「2D」→「物理マテリアル2D(PhysicsMaterial2D)」を追加。

Fricrionが摩擦係数、Bouncinessが弾力性(跳ね返り)です。下記の様にすると「摩擦無し」、「完全跳ね返り」となります。

設定したマテリアルを床のコライダーにセット。

この状態で再生すると下記の様にバウンドします。

摩擦
摩擦を実装する前に、ボールを操作できるようにします。
下記スクリプトを作成して、ボールにアタッチ。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Moving : MonoBehaviour { private Vector2 _move; private float _force = 3.0f; private Rigidbody2D _rb; void Start() { _rb = GetComponent<Rigidbody2D>(); } void Update() { _move = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical")); _rb.AddForce(_move * _force); }
ボールが回転しないように固定します。

床マテリアルのFrictionを変更すると、床の摩擦が変わります。
0でツルツルすべる床、数字を増やすと摩擦が増えて1で最大摩擦の床になります。