Unity 3D Двойной прыжок C#

#c# #unity3d

Вопрос:

Эй, ребята, я пытался запрограммировать двойной прыжок для своего 3D-шутера от первого лица. Это вроде как работает, но не так, как ожидалось. Если я попаду в пробел, игрок прыгнет на высоту 800, но предполагается, что он прыгнет на 500, а если вы снова попадете в пробел, то на 300. Кто-нибудь, пожалуйста, может мне помочь?

 void Start()
{
    rig = GetComponent<Rigidbody>();
}

void Update()
{
    //Keys
    bool jump = Input.GetKeyDown(KeyCode.Space);

    //Statics
    bool isGrounded = Physics.CheckSphere(groundDetector.position, 0.1f, ground);
    bool isJumping = jump amp;amp; isGrounded;
    bool isSneaking = sneak;
    bool isSliding = !isSneaking amp;amp; slide amp;amp; !slideing amp;amp; !slideStop amp;amp; isGrounded;

    if (isGrounded)
    {
        print("vallah");
        jumpCount = 0;
    }

    //Jump
    if (isJumping amp;amp; isGrounded amp;amp; !isSliding amp;amp; !isSneaking)
    {
        rig.AddForce(Vector3.up * jumpForce);
        jumpCount  ;

        if (jumpCount > 0 amp;amp; jumpCount < 2 amp;amp; jump)
        {
            rig.AddForce(Vector3.up * secondJunp);
        }
    }
}
 

Ответ №1:

Вам нужно изменить последнюю инструкцию if, чтобы обработать количество прыжков:

 if (isJumping amp;amp; (jumpCount <= 2) amp;amp; !isSliding amp;amp; !isSneaking)// HERE <--
{
    // Increase Jump Count
    jumpCount  ;

    // First check the jump number
    if (jumpCount == 1)
    {
        rig.AddForce(Vector3.up * jumpForce);
    }
     else if (jumpCount == 2)
    {
        rig.AddForce(Vector3.up * secondJunp);
    }
}
 

Комментарии:

1. Спасибо за быстрый ответ. Это сработало так здорово, спасибо тебе.