Вступить в клуб →
лёгкаявопросC# и жизненный цикл Unity

Перемещение transform без учёта длительности кадра: как это увидит игрок

Летящий снаряд перемещают так:

void Update()
{
    transform.position += transform.forward * 0.2f;
}

Проект собирают под мобильные устройства: часть телефонов держит 60 кадров, флагманы — 120, слабые устройства проседают до 30. Как поведёт себя снаряд?

  • Скорость снаряда окажется привязана к частоте кадров: на 120 кадрах он за секунду пролетит вчетверо дальше, чем на 30
  • Расстояние, пройденное за секунду, будет одинаковым на всех устройствах: различаться будет только плавность движения, потому что на 30 кадрах шаги заметны глазом
  • Unity сам нормирует изменение transform.position по времени кадра, поэтому код корректен и на любом устройстве снаряд летит с одной и той же скоростью
  • Снаряд сломает физику: transform.position нельзя менять из кода вручную, для перемещения существует только Translate, который и учитывает длительность кадра

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела