昨晚在调gmod里某游的NPC模型,总有那么几个碰撞体积异常,表现是ai disable的时候刷出来是大字型,ent_text显示动画是reference(正常是idle开头的),ent_bbox碰撞箱是个宽厚不一样的长方体,会导致ai通过性判定出问题。
一开始以为是模型的问题,用自带的gmad解压一下,找了两个正常和异常的模型,读二进制头比了一下,没有发现hullsize字段有什么区别,改了一下hullsize,自己写了个NPC项扔进游戏里就好了,但是总觉得不是这个问题,把异常的模型也写了个NPC项,发现也是好的。然后把mod里自带的NPC项抄了一个过来,发现还有问题。
经过我火眼金睛的对比,终于发现mod里的NPC项模型路径里有大写字母,而实际路径都是小写的,猜测gmod在处理模型时大小写没有完全敏感。
这样的话修起来就简单了,写了一个lua函数遍历NPC表,把里面的Model对应的字符串全改成小写,扔进autorun里用timer延迟运行一下,问题解决,顺便还可以把Health字段统一修一下。
一开始以为是模型的问题,用自带的gmad解压一下,找了两个正常和异常的模型,读二进制头比了一下,没有发现hullsize字段有什么区别,改了一下hullsize,自己写了个NPC项扔进游戏里就好了,但是总觉得不是这个问题,把异常的模型也写了个NPC项,发现也是好的。然后把mod里自带的NPC项抄了一个过来,发现还有问题。
经过我火眼金睛的对比,终于发现mod里的NPC项模型路径里有大写字母,而实际路径都是小写的,猜测gmod在处理模型时大小写没有完全敏感。
这样的话修起来就简单了,写了一个lua函数遍历NPC表,把里面的Model对应的字符串全改成小写,扔进autorun里用timer延迟运行一下,问题解决,顺便还可以把Health字段统一修一下。