Wielokrotny skok w Unity C#

Jak stworzyć system wielokrotnego skoku w Unity z wykorzystaniem praw fizyki Rigidbody?
W przykładzie pokażemy jak zastosować funkcjonalność wielokrotnych skoków z łatwą możliwością modyfikacji.

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

public class PlayerMove : MonoBehaviour
{
    [SerializeField] Vector2 jumpForce;
    [SerializeField] int jumpMaxNumber = 2;
    int jumpNumber = 0;
    bool isJumping = false;
    Rigidbody2D rb;
    float dirX;
    float moveSpeed = 10f;

    void Start() 
    {
        rb = GetComponent<Rigidbody2D>();
    }
    void Update() 
    {
        dirX = Input.GetAxisRaw("Horizontal");
        if (Input.GetKeyDown(KeyCode.Space))
        {
            isJumping = true;
            jumpNumber++;
        }
    }
    void FixedUpdate()
    {
       rb.velocity = new Vector2(moveSpeed * dirX, rb.velocity.y);

        if(isJumping && jumpNumber <= jumpMaxNumber)
        {
            rb.AddForce(jumpForce, ForceMode2D.Impulse);
            isJumping=false;
        }

        if(Mathf.Abs(rb.velocity.y) < 0.001f)
        {
            jumpNumber = 0;
            isJumping = false;
        }
    }
}

Kursy GameDev Unity

Przewiń do góry