Вероятно, в каждой игре разработчику приходится как-то иметь дело со вводом, будь то простые события клавиатуры и мыши, сенсорные события или что-то вроде ввода акселерометра. Этот вход напрямую косвенно влияет на объекты в игре. Иногда один и тот же вход может влиять на различные объекты. Теперь я думал о том, как смоделировать это. На мой взгляд, есть два разных подхода.
Пусть игровой объект сам обрабатывает его, подписывается на события и вызывает его собственные методы. Преимущество этого состоит в том, что игровые объекты сами решают, какие входные данные вызывают какое действие. Недостатком, по-видимому, является то, что входной код искажается с помощью «основного» кода игрового объекта. Также игровые объекты не знают о состоянии остальной части игры и могут иногда не воздействовать на входные события. Это не кажется правильным.
Пусть общий контроллер ввода позаботится обо всем вводе и примет решение о том, кто будет обрабатывать какое событие. Кажется, это лучше разделяет проблемы, но тесно связывает класс контроллера ввода с игровыми объектами. Нужно как-то знать, кто хочет получить какое событие и в каком состоянии. Это тоже не кажется правильным.
Какие стратегии вы используете для этого?