Прыгающая анимация, играющая только один раз, должна все время - PullRequest
0 голосов
/ 02 марта 2020
public void JumpingStuff()
{
    if (_grounded == true)
    {
        playerAS.clip = playerjump2;
        playerAS.Play();
        extraJumps = extraJumpsValue;
        m_Jump = true;

        //here allow to end the animation if some time was passed
        if (!hasJumped && m_Animator.GetBool("Jumping"))
        {
            m_Animator.SetBool("Jumping", false);
        }
    }
    //(Input.GetKeyDown(KeyCode.Space) && extraJumps > 0)
    // PC
    if (extraJumps > 0)
    {
        rb.velocity = Vector2.up * jumpForce;
        extraJumps--;

        if (m_Jump == true)
            m_Animator.SetBool("Jumping", true);
        playerAS.clip = playerjump;
        playerAS.Play();
        //Debug.Log("playing jumping animation");

        //here your player has began the jump
        if (!hasJumped)
        {
            hasJumped = true;
            StartCoroutine("WaitBitAfterJump");

            //Play sound when he jump
            //playerAS.PlayOneShot(playerjump);
        }
    }
    //(Input.GetKeyDown(KeyCode.Space) && extraJumps == 0 && _grounded == true)
    //PC
    else if (extraJumps == 0 && _grounded == true)
    {
        rb.velocity = Vector2.up * jumpForce;
        rb.velocity = new Vector2(rb.velocity.x, jumpForce);
        m_Animator.SetBool("Jumping", false);
        Debug.Log("I am Jumping");
    }
}

, пожалуйста, помогите мне исправить мой код (я знаю, это грязно, это мой первый раз)

Я менял свой код с мобильного телефона P C>, и я получаю эти ошибки:

Прыжок только один раз должен быть дважды и воспроизводить анимацию только в первый раз

1 Ответ

0 голосов
/ 02 марта 2020

Возможно, вам не хватает "else" в строке

if (extraJumps > 0)

Так что, когда вы вводите этот JumpingStuff и первое условие выполняется

if (_grounded == true)

, оно устанавливает значение extraJumps, а второе условие также выполнено, поэтому оба перехода выполняются одновременно.

после удаления ненужного кода это выглядит следующим образом:

if( grounded == true ){
    PlayJumpAnimation();
    extraJumps = 1;
}

if(extraJumps > 0){
    PlayJumpAnimation();
    extraJumps--;
}

, поэтому, в основном, при заземлении == true, extraJumps установлен в 1 и extraJumps> 0 также верно, так что оба PlayJumpAnimation (); выполняются одновременно без этого, это должно выглядеть примерно так:

if( grounded == true ){
    PlayJumpAnimation();
    extraJumps = 1;
}
else if(extraJumps > 0){
    PlayJumpAnimation();
    extraJumps--;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...