【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段ジャンプを防止するための方法はいくつかありますが、基本的にはジャンプ中に別のジャンプ入力を無効化するか、ジャンプ回数を制限する方法が一般的です。
ディスカッション
コメント一覧
まだ、コメントがありません