【Unity】Ridigbody2Dを使った2Dゲームの2段ジャンプ方法

【PR Unityアセットストア】パブリッシャーセール開催中!

凍った川や湖が表現できるマテリアルやシェーダーのアセットIce World がクーポンコード「NATUREMANUFACTURE2024」で無料でゲットできます
7月25日 23:59まで

Ice World

はじめに

Ridigdoby2Dを使ったジャンプ方法について紹介します。

ジャンプ回数も自由に設定できるので、2段ジャンプ、3段ジャンプも可能です。

当たり判定

ステージとキャラクターに当たり判定を設定しておきます。

詳しくはこちらの記事を参照ください。

ジャンプさせるスクリプト

以下のコードをジャンプさせたいキャラクターにアタッチします。

スペースキーを押したらジャンプします。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class jump : MonoBehaviour
{
    private Rigidbody2D rigidbody2D;

    public float jumpForce = 200f;

    public int MaxJumpCount = 2;
    private int jumpCount = 0;

    private void Start()
    {
        // Rigidbody2Dコンポーネントの取得
        rigidbody2D = GetComponent<Rigidbody2D>();
    }

    private void Update()
    {
        // スペースを押したらジャンプさせる
        // MaxJumpCountの数だけジャンプできる
        if (Input.GetKeyDown(KeyCode.Space) && this.jumpCount < MaxJumpCount)
        {
            this.rigidbody2D.AddForce(transform.up * jumpForce);
            jumpCount++;
        }

    }

    // 床に着地したら、jumpCountを0にする
    private void OnCollisionEnter2D(Collision2D other)
    {
        if (other.gameObject.CompareTag("Floor"))
        {
            jumpCount = 0;
        }
    }
}

床タグの設定

床には、Floorのタグをつけます。

インスペクターから設定しましょう。

Add Tag…からFloorタグをクリックします。

「+」を押して、Floorと名前をつけて追加します。

完成

2段ジャンプできるようになりました!

ジャンプ力が強すぎて、画面外に行ってしまいますが、インスペクターのMaxJumpCountを調整してみましょう。

人気の2Dアクションゲームアセットはこちら。

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