Вы хотите опросить:
void UpdateVehicleFromInput()
{
if (InputSystem()->IsKeyDown(key))
DoSomething();
}
И это, конечно, «где-то в вашем цикле обновления, где это уместно для вашего дизайна». Если вы хотите назвать это конкретное место «частью вашей системы ввода» или «частью вашей игровой логики» или что-то еще, стукните себя вне.
Таким образом, вы знаете, почему вы что-то делаете (клавиша причины не работает), вы можете тривиально отрегулировать условия, вы знаете, что вы делаете что-то один раз и ровно один раз (и вы можете изменить это без разветвления, особенно если транспортное средство не существует), и вы знаете, когда что-то делаете (до или после того, как вы говорите, реагируете на повреждение, или позиционируете эффекты частиц, или кто знает, что еще).
Абстракция системы ввода может быть действительной, если вы действительно занимаетесь кроссплатформенной разработкой. для случайной разработки это очень не нужно (но забавное техническое отвлечение, когда у вас заканчиваются идеи для разработки игр).
Вопреки иррациональному распространенному мнению, нет никаких недостатков в опросе. Процессоры делают> 1B вещей в секунду, один ЕСЛИ кадр не имеет значения (в основном единственные соответствующие операции ЦП - это N ^ 2, где N> 100, и вы перегружаете ваш кэш второго уровня и, конечно, заняты ожиданием доступа к диску). Вход опроса O (1).