Если спрайт замедляется ниже 2f в направлении X, он перейдет в состояние ожидания. Тогда, находясь в состоянии ожидания, ваш лог c сможет только перейти в рабочий режим. Если он падает от края, в вашем коде нет ничего, чтобы перевести его в падающее состояние.
Вы не должны писать конечный автомат так, как вы указываете каждый возможный переход из каждого состояния в другое состояние как Есть N квадратов перестановок. Вместо этого вы должны определить состояние, не обращая внимания на текущее состояние.
Например:
- Прыжок - это скорость. Y> 0
- Падение - это скорость. y <0 </li>
- FallingFast - это speed.y <-0.1 (т. е. здесь запускается анимация свободного падения) </li>
- Вред ортогональн (то есть не связан с состоянием движения) и должен основываться на столкновении.
- Бег - скорость.y == 0, а abs (скорость.х)> 2
- Бездействие - скорость.магнитность == 0