Мне нужно различать, прыгнул персонаж (по кнопке "W") или начал падать (например, сойдя с уступа). У меня есть анимация прыжка, в которую переходит персонаж, как только он перестаёт находиться на земле (используется переменная IsJumping). Персонаж должен менять анимацию, как только он начнёт находиться на земле. Вот, как это выглядит сейчас:
//Код ниже находится в методе Update()
if (Input.GetKeyDown(KeyCode.W) && IsGrounded())
{
playerRigidBody.AddForce(new Vector2(0, jumpImpulse), ForceMode2D.Impulse);
}
playerAnimator.SetBool("IsJumping", !IsGrounded());
Я думаю, что тут видно, что никакой проверки на падение нет. Я пытался сделать нечто такое:
//Код ниже находится в методе Update()
if (IsGrounded())
{
jumpState = false;
}
if (Input.GetKeyDown(KeyCode.W) && IsGrounded())
{
playerRigidBody.AddForce(new Vector2(0, jumpImpulse), ForceMode2D.Impulse);
jumpState = true;
}
playerAnimator.SetBool("IsJumping", jumpState);
По задумке после нажатия на W переменная jumpState обращается в true, персонаж начинает прыгать. Как только персонаж касается земли, срабатывает первое условие и анимация прерывается. На деле персонаж начинает прыгать, но на следующем кадре он ещё на земле (не мгновенно же всё происходит), в итоге анимация на следующем же кадре прерывается. Я пробовал использовать FixedUpdate для обновления jumpState, это не помогло. Что можно сделать в моём случае?