Unity 2D - сброс анимации прыжка - PullRequest
1 голос
/ 10 марта 2019

Я новичок в мире Unity (2D) и столкнулся с некоторыми проблемами.

У меня есть скрипт, в который я хочу перейти.Когда я прыгаю, анимация прыжка супер быстрая.Вы можете видеть это только в аниматоре.

У меня есть две другие анимации (Idle, Run), которые работают без проблем.

Можете ли вы помочь мне?: (

    public class Player : MonoBehaviour

{
    private Rigidbody2D rigid;

    [SerializeField]
    private float jumpForce = 5.0f;
    private bool resetJump;
    [SerializeField]
    private float speed = 5.0f;
    private PlayerAnimation playerAnim;
    private SpriteRenderer playerSprite;

    // Start is called before the first frame update
    void Start()
    {
        ...
    }

    // Update is called once per frame
    void Update()
    {
        Movement();
    }

    void Movement()
    {
        float move = Input.GetAxisRaw("Horizontal");
        Flip(move);

        if (IsGrounded())
        {            
            playerAnim.Jump(false);
        }

        if (Input.GetKeyDown(KeyCode.Space) && IsGrounded() == true)
        {
            rigid.velocity = new Vector2(rigid.velocity.x, jumpForce);            
            StartCoroutine(ResetJumpNeededRoutine());
            playerAnim.Jump(true);
        }        
        rigid.velocity = new Vector2(move * speed, rigid.velocity.y);
        playerAnim.Move(move);
    }

    void Flip(float move)
    {
        ...
    }

    bool IsGrounded()
    {
        RaycastHit2D hitInfo = Physics2D.Raycast(transform.position, Vector2.down, 0.3f, 1 << 8);
        if (hitInfo.collider != null)
        {
            if (resetJump == false)
            {
                return true;
            }
        }
        return false;
    }

    IEnumerator ResetJumpNeededRoutine()
    {
        yield return new WaitForSeconds(0.1f);
        resetJump = false;
    }
}

1 Ответ

1 голос
/ 11 марта 2019

Проблема в вашем коде сразу после нажатия пробела, сброс сброса становится ложным, а isGounded () возвращает истину, и, следовательно, анимация перехода становится ложной.Так что я настаиваю на том, чтобы установить триггер вместо установки playerAnim.jump, используя playerAnim.SetTrigger ("Jump").

Изучите триггер анимации, мы используем триггер для воспроизведения анимаций, таких как стрелять и прыгать, поскольку эта анимация истинна изатем в следующий момент ложь.

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