background image

例如游戏的结束、人物的选择或下一个级别。很多时候你需要在某个状态上等上

几秒钟,而状态管理应该处理这种延迟,并且在时间过了之后设置成下一个状

态。

  输入是指用户按下的任何键、对于滚动条的移动或者用户的触摸。在处理物

理之前处理这些是很重要的,因为很多时候输入会影响到物理层,因而首先处

理输入将会使游戏的反应更加良好。在

Android 里,输入事件从主用户界面线程

而来,因此你必须写代码将输入放入缓冲区,这样你的主循环可以在需要的时

刻就从缓冲区里取到它。这并非难事。首先为下一个用户输入定义一个域,然后

onKeyPressed 或 onTouchEvent 函数设为接到一个用户动作就放到那个域里,

有这两步就够了。如果对于给定游戏的状态,这是一个合法的输入操作,那么所

有输入需要在那一刻做的更新操作都已经定下来了,剩下来就让物理去关心怎

样响应输入吧。

  人工智能所做的类似于用户在决定下一个要

“按”哪个按钮。学习怎样写人工

智能程序超出了这篇文章的范围,但大体的意思是人工智能会按照用户的意图

来按按钮。这些也有待物理去处理和响应吧。

  物理可能是也可能不是真正的物理。对于动作类游戏来说,关键点是要考虑

到上一次更新的时间、正在更新的当前时间、用户输入以及人工智能,并且决定

它们朝着什么方向发展和是否会发生冲突。对于一个你可视化地抓取一些部件并

滑动它们的游戏来说,物理就是这个游戏中滑动部件或者使之放入合适的位置

的部分。对于一个小游戏来说,物理便是这个游戏中决定答案是错还是对的部分

你可能将其命名为其他东西,但每个游戏都有一个作为游戏引擎的主体部分,

这里把这部分称为物理。

 动画并非像在游戏里放入会动的 gif 图片那样简单。你