Перемещение transform без учёта длительности кадра: как это увидит игрок
Летящий снаряд перемещают так:
void Update()
{
transform.position += transform.forward * 0.2f;
}
Проект собирают под мобильные устройства: часть телефонов держит 60 кадров, флагманы — 120, слабые устройства проседают до 30. Как поведёт себя снаряд?
- Скорость снаряда окажется привязана к частоте кадров: на 120 кадрах он за секунду пролетит вчетверо дальше, чем на 30
- Расстояние, пройденное за секунду, будет одинаковым на всех устройствах: различаться будет только плавность движения, потому что на 30 кадрах шаги заметны глазом
- Unity сам нормирует изменение transform.position по времени кадра, поэтому код корректен и на любом устройстве снаряд летит с одной и той же скоростью
- Снаряд сломает физику: transform.position нельзя менять из кода вручную, для перемещения существует только Translate, который и учитывает длительность кадра
