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;
}
}
}