Метод Update выполняется с каждым обновлением экрана, т.е. зависит от настройки частоты обновления экрана пользователя.
Метод FixedUpdate - по умолчанию выполняется 50 раз в секунду (можно настроить). В нем обычно пишется логика, расчет передвижения игрока и т.д.
В чем проблема - эти 2 метода не синхронизированы.
То есть я делаю все расчеты, например движение, в FixedUpdate. А вызов/смену анимации (это же отображение, не расчет) в Update.
Пример
Синтаксис:
Используется csharp
void FixedUpdate()
{
if (horizontalInput>0) /Vector3 movement = new Vector2(horizontalInput* playerSpeed, rb.velocity.y);
}
void Update()
{
if (horizontalInput>0) playAnimation=1; // Устанавливаем значение переменной в аниматоре - переход по стрелке к анимации.
}
{
if (horizontalInput>0) /Vector3 movement = new Vector2(horizontalInput* playerSpeed, rb.velocity.y);
}
void Update()
{
if (horizontalInput>0) playAnimation=1; // Устанавливаем значение переменной в аниматоре - переход по стрелке к анимации.
}
FixedUpdate и Update имеют разную частоту выполнения и, как я полагаю, не синхронизированы.
Итого, в примере выше, либо анимация начнется раньше движения, либо движение, раньше анимации.
Решение - перенести всё в FixedUpdate.
Проблема - он вызывается 50 раз в сек., что медленно (пользователь может жать клавишу 6 раз в секунду). Настраивать FixedUpdate до 300 раз в сек? Непонятно...
И зачем тогда Update?