横板闯关游戏里有许多游戏元素是有趣的。比如上下活动的箭。间歇喷火。还有固定炮台。还有近战兵,投掷兵,飞行兵。如何实现这些特点的游戏元素。
这些游戏元素可以分成不同种类。比如地面单位,固定炮台,飞行单位,喷火机关。而实现这些行为的是不同种类的AI控制。
这些游戏元素继承一个AI控制接口,实现接口的比如移动,攻击,等待,跳跃,技能等方法。AI类通过这些接口操作游戏元素类。让游戏元素做出对应的动作。
AI类,实现简单的状态机,让单位巡逻,等待,追击,攻击。逃跑之类的行为。这些AI类继承一个AI基类。不同的AI类可以有自己不同的行为,实现单位不同的行为表现。
class NormalSpriteAI:public SpriteAIBase{
...
//切换状态
void switch_sprite_status(){
...
}
//更新行为
void update(){
...
}
};游戏元素单位一般有个属性文件。在属性文件里,可以指定AI类型,指定了AI类型,也就指定了这个游戏元素是什么类型,有什么行为。
AIType FlySprite #指定这是一个飞行AI控制的单位,它会根据AI控制实现飞行行为
在游戏里一般会有精灵管理器,精灵管理器在创建精灵的时候,会对其进行配置和组装。当检测到AIType的属性后,它会分配一个FlySprite类型的AI给这个精灵。也等于给精灵一个大脑。之后这个精灵的行为就取决于这个ai的控制了。