Unity3D Double Jump - PullRequest
       1

Unity3D Double Jump

0 голосов
/ 01 июня 2019

Я пытаюсь сделать свою сферу двойным прыжком, но она кажется глючной и запоздалой, а иногда прыгает больше или меньше того, что я хочу. Я пробовал смотреть видео и вопросы, но они в основном для 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;

        }

    }
}

Я хочу, чтобы он мог дважды прыгать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...