Я пытаюсь сделать свою сферу двойным прыжком, но она кажется глючной и запоздалой, а иногда прыгает больше или меньше того, что я хочу. Я пробовал смотреть видео и вопросы, но они в основном для 2D.
Я пытался изменить условия и значения, но либо он не прыгает столько, сколько я хочу, либо опаздывает с прыжками.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ControllerScript : MonoBehaviour
{
public float speed;
public float jumpVelocity;
public float fallMultiplier = 2.5f;
public int currentJump = 0;
private bool isGrounded;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
if(isGrounded == true)
{
currentJump = 2;
}
}
void FixedUpdate()
{
float moveHorizontal = Input.GetAxisRaw("Horizontal");
float moveVertical = Input.GetAxisRaw("Vertical");
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
movement = Vector3.ClampMagnitude(movement, 1);
rb.AddForce(movement * speed * Time.deltaTime);
if (Input.GetKeyDown(KeyCode.Space) && currentJump > 0)
{
GetComponent<Rigidbody>().velocity = Vector3.up * jumpVelocity;
currentJump--;
}
else if(Input.GetKeyDown(KeyCode.Space) && currentJump == 0 && isGrounded == true)
{
GetComponent<Rigidbody>().velocity = Vector3.up * jumpVelocity;
}
if (rb.velocity.y < 0)
{
rb.velocity += Vector3.up * Physics.gravity.y * (fallMultiplier - 1) * Time.deltaTime;
}
}
void OnCollisionEnter(Collision collision)
{
Debug.Log("Entered");
if (collision.gameObject.CompareTag("Platform"))
{
isGrounded = true;
}
}
void OnCollisionExit(Collision collision)
{
Debug.Log("Exited");
if (collision.gameObject.CompareTag("Platform"))
{
isGrounded = false;
}
}
}
Я хочу, чтобы он мог дважды прыгать.