时间:2015-11-02 10:56:49 来源:当游网 作者:当游网 编辑:rawsyww 字体大小:
强盗
接下来就是星际海盗们的世界观了:
攻击殖民者(理所当然)、进入室内、在室内闲逛。
没了。
有人可能会说,怎么这么简单?还有,你要去攻击殖民者不就包含进入室内了么,怎么下面还有个进入室内?由于入侵者这个项比较少,我决定展开来解释嵌套关系,来让大家更好的理解这套AI逻辑的运行方法 。
首先让我们进入第一个优先级的函数:去攻击殖民者,让我们去看一下它是怎样被定义的:
第一个if的地方判定的是角色的身份,我就不再一一赘述statusflag12代表的内容了。然后这个函数会去寻找离强盗们最近的站着的角色。
让我们再来到findneareststanding函数被定义的地方:
这里就很明了了,该函数会枚举所有你的殖民者们,并且如果它们当前状态不是死亡,或者被打倒的状态时,函数会计算一个限制距离内所有殖民者中离你最近的一个,并把结果返回上一级。
让我们回到这里:
现在,我们得到了findnearsetstanding函数传回的离你最近并且可用的殖民者了,我们的下一个目标便是要接近她,这个目标则由goTarget实现。
我们来详细看一看gotarget:
我们真正输入的参数其实是当前处理的这个强盗和这个强盗将要选定目标的被害人,而这个函数的作用就是使强盗走向被害人,而其中就包含了goToBestAirlock(走向选定的最佳气闸)。至于这个函数是如何定义的就不再解释,太过复杂,也考虑到了其它正在执行的任务对流量造成的影响。
至此,强盗开始了自己入侵的过程,补充下前面setradius参数指的是当强盗离目标8个单位时,强盗会开始开火。
而我们看到,如果在findneareststanding(查找最近的目标)函数阶段,所有的目标都在范围之外,那么这个函数将会返回一个空值,下面一阶段的if条件不会被 满足,然后整个大函数会返回一个false的值,这也就代表了在任务优先级列表中,第一个优先级的任务(攻击殖民者)的条件不满足,开始按顺序进行优先级列表中的下一个任务。
所以说了那么多,我想表达的就是,其实在攻击殖民者这个任务里包括了许许多多逻辑AI,其中就包括进入气闸这一项。至于第二个优先级任务安排进入室内的原因是,如果强盗周边在规定范围内没有符合要求的目标,那么强盗就会进入室内。
在此之后,强盗满足了处于室内的状态,优先级顺位中第二位的进入室内的条件返回也会变成false,这时候,强盗会执行第三顺位的任务:在室内随机游荡,直到在下一次判定的时候第一顺位任务的条件被触发,那么强盗就会去攻击那个被选中的倒霉蛋了。
以上就是星球基地中AI代码的解析,被AI折腾过的小伙伴们这回掌握操控他们按你的意图行事的方法了吗?
0
提示:支持键盘“← →”键翻页