【Unity3d】3Dプロジェクトでキャラクターの2段ジャンプを実現する方法

        考え方は次のとおりです。

        まず、キャラクターがジャンプできる回数を保存する変数を定義する必要があります。開始位置では、この変数は 2 に初期化される必要があります。次に、ジャンプキーが押されたときに、ジャンプカウンタの値を確認します。この値が 0 より大きい場合、キャラクターはジャンプできます。キャラクターのジャンプカウンターが1減少し、ジャンプアップする必要があります。キャラクターが空中にいるときにジャンプキーを押したとき、ジャンプカウンターの値を確認します。この値が 0 より大きい場合、キャラクターは再びジャンプできます。キャラクターのジャンプカウンターは 1 減少し、再びジャンプする必要があります。

        次のスクリプトでは、コライダーと剛体コンポーネントをキャラクターに追加する必要があります。

public class PlayerController : MonoBehaviour
{
    public float jumpForce = 5f;
    public int maxJumps = 2;
    private int jumps;

    private Rigidbody rb;

    private void Start()
    {
        rb = GetComponent<Rigidbody>();
        jumps = maxJumps;
    }

    private void Update()
    {
        if (Input.GetButtonDown("Jump"))
        {
            if (jumps > 0)
            {
                rb.velocity = new Vector3(rb.velocity.x, jumpForce, rb.velocity.z);
                jumps--;
            }
        }
    }

    private void OnCollisionEnter(Collision collision)
    {
        jumps = maxJumps;
    }
}

        次のスクリプトでは、キャラクター コントローラー コンポーネントをキャラクターに追加する必要があります。

public class PlayerController : MonoBehaviour
{
    public float jumpForce = 5f;
    public int maxJumps = 2;

    private int jumps;

    private CharacterController controller;
    private Vector3 moveDirection = Vector3.zero;

    private void Start()
    {
        controller = GetComponent<CharacterController>();
        jumps = maxJumps;
    }

    private void Update()
    {
        if (controller.isGrounded)
        {
            jumps = maxJumps;
        }

        if (Input.GetButtonDown("Jump"))
        {
            if (jumps > 0)
            {
                moveDirection.y = jumpForce;
                jumps--;
            }
        }
        moveDirection.y -= Time.deltaTime * 9.81f;
        controller.Move(moveDirection * Time.deltaTime);
    }
}

おすすめ

転載: blog.csdn.net/m0_51942776/article/details/130452433