【Unity】2段ジャンプを防ぐサンプル

Unityにおいて、2段ジャンプを防ぐには、以下のような方法があります。

ジャンプ中に別のジャンプ入力を無効化する

ジャンプ中に別のジャンプ入力を受け付けないようにすることで、2段ジャンプを防止することができます。以下に、プレイヤーのジャンプ処理において、2段ジャンプを防ぐためのコード例を示します

using UnityEngine;

public class PlayerController1 : MonoBehaviour
{
    public Rigidbody2D rb;
    public float jumpForce;
    bool isJumping;

    // ...

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space) && !isJumping)
        {
            rb.AddForce(new Vector2(0, jumpForce));
            isJumping = true;
        }
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("Ground"))
        {
            isJumping = false;
        }
    }
}

上記の例では、isJumpingフラグを使用して、ジャンプ中に別のジャンプ入力を無効化しています。 OnCollisionEnter2Dメソッドを使用して、プレイヤーが地面に接触した時にisJumpingフラグをリセットします。

ジャンプ回数を制限する

プレイヤーがジャンプできる回数を制限することで、2段ジャンプを防止することができます。以下に、ジャンプ回数を制限するためのコード例を示します

このサンプルは2段までOKのコードです

using UnityEngine;

public class PlayerController2 : MonoBehaviour
{
    public Rigidbody2D rb;
    public float jumpForce;
    int jumpCount;
    public int maxJumpCount;

    // ...

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space) && jumpCount < maxJumpCount)
        {
            rb.AddForce(new Vector2(0, jumpForce));
            jumpCount++;
        }
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.CompareTag("Ground"))
        {
            jumpCount = 0;
        }
    }
}

上記の例では、jumpCount変数を使用して、プレイヤーがジャンプできる回数を制限しています。 OnCollisionEnter2Dメソッドを使用して、プレイヤーが地面に接触した時にjumpCount変数をリセットします。

以上のように、2段ジャンプを防止するための方法はいくつかありますが、基本的にはジャンプ中に別のジャンプ入力を無効化するか、ジャンプ回数を制限する方法が一般的です。

サンプルシーン

Playerゲームオブジェクト

Groundゲームオブジェクト

Unity,小技

Posted by hidepon