Будет ли этот код работать некорректно при разной частоте обновления экрана?

Физика игры, например скорость героя, должна быть одинакова, вне зависимости от устройств (частоты обновления экрана).
В коде ниже, скорость героя, зависит от horizontalInput.
В тоже время, от horizontalInput зависит когда повернется спрайт ("герой").

Что будет при высокой частоте обновления экрана? Успеет ли герой вовремя повернуться или будет отставание-глюк т.к. этот код выполняется 50 раз в сек, а при частоте в 120 экран будет обновляться быстрее?
Вынести horizontalInput в Update, наверно тоже нельзя т.к. будет неверный расчет movement (или это не так т.к. movement от 1 до -1)?
Стоит увеличить FixedUpdate до 120? (нагрузка возрастет)

// Фиксированный вызов кода - по умолчанию 0.02 (50 раз в секунду).
void FixedUpdate() 
{

horizontalInput = Input.GetAxis("Horizontal");
verticalInput = Input.GetAxis("Vertical");
if (horizontalInput < 0) sr.flipX = true;
if (horizontalInput > 0) sr.flipX = false;

Vector3 movement = new Vector2(horizontalInput* playerSpeed, rb.velocity.y);
rb.velocity = movement;
}
  • Вопрос задан
  • 41 просмотр
Решения вопроса 1
@Ezekiel4
Охотник на пиратов и сборщик монолитов
Заметный эффект будет при переворачивании огромных изображений. Проблемой в этом коде является отслеживание ввода в FixedUpdate. У вас поля ввода (horizontalInput и verticalInput) и так уже в контексте класса, просто перенесите считывание внутрь Update.

Если вас волнуют микрооптимизации, то рекомендую для начала узнать, что в конструкции if-else может использоваться блок else if
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Zerg89
Если это планируется как клиент серверное приложение(mmo)то это в корне неправильно, если это просто однопользовательская игра то не важно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы