床や壁の摩擦と跳ね返りの設定-PhysicsMaterial-【Unityゲーム制作】

今回は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で最大摩擦の床になります。

タイトルとURLをコピーしました