1、npc开枪条件的测试
这可能是最具有研究意义的内容之一了。在野外有npc跟随时,如果npc傻乎乎地跑进一群僵尸中间去近战,就多了几分白给的风险;但npc一旦开枪,就可以为玩家提供强大的火力支援。游戏本身并没有对npc使用枪械的机制进行说明,因此在此对npc开枪的条件进行测试。最终的结果仍然是经验性的,并没有对代码级的内容进行研究(楼主目前还不会做mod),如有错误欢迎指正。
(0)一些距离的定义
因为无法精确测量,这里用几个特定行为的触发距离作为基准单位。都是比较近的距离,而实际上带出门的npc并不会用枪攻击远处的僵尸。
> 处决/近战距离:近战武器攻击范围,在这个距离下也可以触发处决动作
> 正面吸引仇恨距离:玩家在僵尸面前走路,能够吸引仇恨的距离
> 跟随距离:npc正常跟随玩家时能拉开的最大距离
> 脱战距离:如果npc和玩家之间超过这个距离,npc会立即脱战并且跟过来
(1)猜想和测试方式
在带npc打僵尸时,发现周围有零散僵尸时npc基本都是会跑过去近战,而在打尸群时,如果同时和多个僵尸战斗,npc就有比较大的概率开枪支援。但是如果npc被僵尸围殴,就不会开枪而是一直近战。因此,猜想npc的开枪条件是:玩家和npc吸引了多个僵尸的仇恨,但npc附近没有僵尸时,就不会近战而是开枪支援。
这一猜想的测试过程中,用到了一个尸群的特性,即玩家一旦吸引了其中一个僵尸的仇恨,就会吸引整个尸群的仇恨。让npc跟在身后走向尸群,保持
(尸群)–(玩家)–(npc)
的队形,就可以保证npc附近没有僵尸,而玩家同时吸引了许多僵尸的仇恨。在远处事先用消音武器杀掉一些僵尸,在尸群中留下特定数量的僵尸,就可以测试能够触发npc开枪行为的僵尸数量。
如果需要降低风险,可以事先用弩把僵尸的腿都射断再测试。
(2)结论
(对普通僵尸)经测试,吸引4~5只僵尸的仇恨就足以让npc开枪,不需要玩家先开枪。如果没有僵尸进入npc周围近战距离范围内,npc将会优先使用枪械,否则转为近战。如果玩家被僵尸攻击,npc开枪支援的几率会增大(实测被2只僵尸攻击npc就会开枪)。npc在开枪后,如果遇到了新靠近的僵尸,将会优先用枪攻击。玩家和npc之间的距离不超过脱战距离时,npc会持续开枪攻击。
(对特殊僵尸)尖叫尸同普通僵尸。遇到狂猛尸、巨无霸时,一旦吸引了仇恨npc就会开枪攻击。遇到血心时,如果npc和血心之间的距离小于脱战距离(可能不准,因为血心多在房屋内,不方便测)时,会优先开枪攻击。
(3)验证
为了排除尸群判定带来的影响,验证npc开枪是否只和吸引仇恨的僵尸数量有关,还需要拿零散僵尸做一下测试。
第一种测试方法为:让npc拿钝器,先找一个落单的僵尸让npc去打,拖住时间,此时迅速到周围跑一圈,拉一些僵尸的仇恨(但要保证npc不能被僵尸围殴,也不能脱战),等npc打完那一个僵尸,拉到的僵尸也差不多聚到一起了,此时观察npc的行为即可。