Падающая анимация на склонах - PullRequest
0 голосов
/ 06 апреля 2020

Я довольно новичок во всем этом, так что извините за ошибки ладьи ie. Я построил конечный автомат, которым я очень доволен, с одной проблемой: всякий раз, когда игрок прыгает по склону и продолжает бегать (вверх или вниз), анимация не переключается на работу и продолжает падать.

 private void FixedUpdate()
    {
        GroundCheck();

        if (state != State.hurt)
        {
            Movement();
            DoubleJump();
            StateMachine();
        }

        HurtCheck();
        anim.SetInteger("state", (int)state);
    }

private void Movement()
    {
        float hDirection = Input.GetAxis("Horizontal");

        //holding down "D" makes the value positive and vice versa
        if (hDirection < 0)
        {
            rb.velocity = new Vector2(-speed, rb.velocity.y);
            transform.localScale = new Vector2(-1, 1);
        }
        else if (hDirection > 0)
        {
            rb.velocity = new Vector2(speed, rb.velocity.y);
            transform.localScale = new Vector2(1, 1);
        }
        else
        {

        }

        if (Input.GetButtonDown("Jump") && isGrounded == true)
        {
            Jump();
        }
    }

private void StateMachine()
    {
        if(rb.velocity.y > 2f && isGrounded == false)
        {
            state = State.jumping;
        }

        if(rb.velocity.y < 2f && isGrounded == false)
        {
            state = State.falling;
        }

        if(rb.velocity.y == 0 && Mathf.Abs(rb.velocity.x) > 2f)
        {
            state = State.running;
        }

        if(rb.velocity.magnitude == 0)
        {
            state = State.idle;
        }
    }

1 Ответ

0 голосов
/ 06 апреля 2020

Похоже, вы намерены rb.velocity.y быть больше 0 на склоне. Но чтобы войти в рабочее состояние, у вас есть условие rb.velocity.y == 0. Если вы хотите бегать по склону, то, возможно, вам следует изменить это условие следующим образом.

    if((rb.velocity.y < 2f) && (Mathf.Abs(rb.velocity.x) > 2f))
    {
        state = State.running;
    }
...