WEB开发网
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game C... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十九) 人工智能(AI)之追踪者

 2010-09-30 20:46:54 来源:WEB开发网   
核心提示:经过前面28节的不断完善,主角已经具备了MMORPG游戏中的大多数功能;但是其他精灵例如怪物等暂时还是无法行动的,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十九) 人工智能(AI)之追踪者,上一节中它们无辜的充当了主角的肉靶子,它们开始呐喊:上帝呀,此时我们不妨为这些方法均

经过前面28节的不断完善,主角已经具备了MMORPG游戏中的大多数功能;但是其他精灵例如怪物等暂时还是无法行动的,上一节中它们无辜的充当了主角的肉靶子,它们开始呐喊:上帝呀,请给予我们灵魂与智慧吧!其实灵魂早就有了,就是精灵的生命线程。那么该如何赋予精灵智慧呢?

精灵智慧的实现其实就是为精灵赋予AI(人工智能)。完整的游戏引擎或多或少都必须拥有一定的AI,例如棋牌类型游戏有着它们独特出牌AI,射击类型游戏同样也拥有相应的计算AI等等。AI的类型在不同类型游戏中有着不同的体现与定位,可深可浅,甚至无限扩充的可能。在MMORPG类型的游戏中则以“追踪者”为最基础的精灵用AI,同时也是游戏中使用率高达80%以上的AI类型。何谓“追踪者”?简单的说就是当怪物发现敌对玩家或是其他敌对精灵时即会锁定目标并向其位置移动,一旦对方进入自己的攻击范围后即刻发起物理或魔法攻击;同时,如果对方跑开,自己会继续追击且循环重复前面过程,就好比一个幽灵缠着你。这段描述大家是否有种四曾相似的感觉?没错,“追踪者”AI其实就是上一节中主角战斗功能模块实现的最直接体现。下面我将为大家讲解如何通过代码实现怪物的“追踪者”人工智能。

游戏AI设计同样是对游戏引擎框架合理性的重要考验,大家回想一下,主角与怪物均为QXSpirit类型控件,通过前面的章节我们已经实现了主角大多数的功能,如移动、攻击、追击、伤害等等;同样的,我们是否可以将用于实现这些功能的方法为其他所有精灵通用?这是肯定的。比如障碍物预测使用的方法WillCollide(),直线移动方法StraightMoveTo(),寻路移动方法AstarMoveTo(),判断移动到达目的地方法ArriveTarget()等等,这些方法在前面章节中均是无参数的,里面的处理均以Leader为主元素进行相应的属性设置及修改。此时我们不妨为这些方法均添加一个QXSpirit spirit参数,然后将方法里的Leader全部改成spirit;如此,在除法AI后,所有的精灵对象就都可以重用这些方法了:

1 2 3  下一页

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接