我是否应该在按下按键时将按键推到车辆上,或者车辆是否应该从发动机上按下按键?
我有一个车辆物体,它有位置,速度和加速成员(以及其他东西)和更新方法,在此期间它根据其速度和基于其加速度的vevlocity更新其位置.
我有一个游戏对象,其中包含游戏循环,它调用车辆上的更新方法.
如果玩家用箭头键控制车辆,按键是否设置加速(按下)和按键释放清除速度,或者车辆是否应该询问游戏引擎是否按下了按下(拉动)?我认为推动意味着键盘控制模块需要了解车辆,而拉动意味着车辆需要知道特定的键盘控制.
我认为一个相关的问题是:如果所有对象都知道所有其他对象,或者是否应该有严格的层次结构,那么对象可以向树上的其他对象询问事物/告诉事物,但不要向下(或反之亦然) )?
您应该尝试遵循订阅/观察者模式.您将所有密钥捕获代码放入一个单独的 InputManager中,然后将每个对象都需要响应以向管理器输入寄存器.
管理员保存订阅对象列表,并在按下/按下按键时向其发送事件.只是不要忘记在删除对象或"失去焦点"时取消订阅.
这避免了轮询问题.很少有例外情况需要轮询解决方案.