游戏AI
游戏世界里有各种各样的AI行为,例如怪物砍人,玩家自动挂机等等。一个游戏好不好玩,很重要一点就是游戏的A质量,毕竟PVE占玩家游戏时间很大比重。当然,游戏AI设计难度非常大,我们看到的大部分游戏里的怪物都是傻乎乎的,无非都是填充属性拼数值而已,很难与单机游戏的AI相提并论。虽然拿不出手,但还是要有的,毕竟需求摆在这里。
假设有这样的简易场景
场景里的一只怪物平时就在洞口巡逻。当遇到敌人的时候,如果比对方强大,就揍敌人;如果比敌人弱,就绕道逃跑。
用switch结合if语句,很简易实现上面的需求
enum State {
Patrol,
RunAway,
Attack
};
void onUpdate(State currState) {
switch(currStage) {
case Patrol: {
if (seeEnemy()) {
if (StrongerThanEnemy) {
changeState(Attack);
} else {
changeState(RunAway);
}
}
break;
}
case Attack: {
// 快死啦
if (willDieSoon()) {
changeState(RunAway);
} else {
if (enemyDie()) {
changeState(Patrol);
}
}
break;
}
case RunAway: {
if (safeNow()) {
changeState(Patrol);
}
break;
}
}
}
乍看一下