AI,如何实现NPC的听觉

一、什么是NPC的听觉?

      NPC(非人类角色)的听觉是指npc对于身边声音环境的感知,比如你从背后接近npc,如果不收敛脚步声,他就会发现你的行动,那么你将无法刺杀他。

二、 NPC的听觉设计因素

   对于实现听觉系统,可以考虑如下一些因素

   A 障碍物是否会减弱声音的传输,如墙体或树木是否会阻碍声音的传播

   B 声音传输距离与声音衰减的关系,是否衰减,如果衰减,是线性的衰减,还是非线性的衰减

   C 僵尸的听力,弱,中,强。那么僵尸的听力如何作用

   当然越逼真则需要消耗的性能就越多,代码量也会增加。

三、NPC听觉的设计方案

    下面给出几个设计方案(仅供参考)

    (一) a 僵尸的听觉为球形,听觉强的僵尸球大,弱的球小。

               b 声音不衰减,并且免疫障碍物阻碍,但可以限定声音的传播距离。

               c 如果音源在僵尸听觉球内,且二者距离没有超过声音的最大传输距离,则僵尸受到声音刺激。

               d 此方法简单粗暴,只需要判断几个距离值就OK

    (二) a 僵尸不需要有听觉球

               b 声音线性的衰减,但免疫障碍物阻碍,同时给出声音的传播范围。

               c 如果僵尸和音源距离小于声音传输范围,依据此时声音的剩余能量与僵尸的听力,来进一步判断僵尸是否收到声音刺激。

               d 此方法需要设计一个声音衰减函数,还需要额外的逻辑处理听觉与声音的关系。


    (三) 同二。但要进一步考虑声音的衰减与障碍物之间的关系。有时两者距离虽然很近,但毕竟隔着一道墙,玩家不会期望此时僵尸已经被声音刺激了。

               那么如何考虑障碍物与声音的衰减关系。

               a 比较精确的做法就是A star 寻路。音源(玩家)与僵尸之间的最短路径,声音依据此距离进行衰减,如果路径很长那么虽然直线距离近也不受影响。

               b 比较简便的做法就是分区,比如地图的某一片区域只能听见该区域的声音,墙左边是一片区域,右边一片区域,左边的声音无法影响右边。

四、NPC听觉是否使用模糊逻辑

    最后一个需要注意的问题,是否启用模糊逻辑。僵尸听力与声音的远近或者大小,以什么逻辑来表述。

    是精确的逻辑,即音源距离<=100m或是声音的振幅>=20db才能听见。

    另外,在精确逻辑下,也可以附加以概率模型,比如10m内100%听见,20-50m 50%听见等。

    还是模糊逻辑,普通听力的僵尸中等距离应该能听见,远距离可能听不见。


【参考文献】

[1]游戏编程精粹7,设计真实且统一的代理感知模型

[2]游戏人工智能编程案例精粹


【致谢】

转载请标明出处,谢谢

猜你喜欢

转载自blog.csdn.net/zjq2008wd/article/details/48371941