骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索

关于agent的飞行功能的第四种办法——attatch碰撞挤压法

查看数: 2100 | 评论数: 1 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2024-9-2 18:48

正文摘要:

本帖最后由 vegetto 于 2024-9-3 19:04 编辑 之前已经写过类似贴,并且很多同志也有突破。除了场景物托人、agent no dynamic取消重力物理效果使得可以坐标设置3D空间、以及骨骼动作参数调整  这三种办 ...

回复

vegetto 发表于 2024-9-3 06:46:24
本帖最后由 vegetto 于 2024-9-3 07:31 编辑

这个方法的最大弊端其实是所有凡是牵扯到场景物碰撞或dynamic效果的飞行做法都会遇到的一个bug,如果你不仔细处理细节是不可避免的。你们应该见过有人用编辑模式把工程车撤掉,站在上面的人掉不下来的情况吧。人在空中停滞和缓缓移动时,这时候终止飞行产生自由落体的状态瞬间,脚下会生成一种编辑模式看不见的空气墙,像一种虚拟的地面,是你甚至不能通过高度检测判断你是否悬空,只能通过检测强制ai挪开,但这样系统才仅仅概率性清除这个虚拟地面碰撞,并且对ai的agent高概率容易出现,一旦出现这个,就会影响你对飞行终止执行下落的判断,人直接锁死高空点,哪怕你用的是dynamic法。而attach法出这种bug的概率最高,所以ai无论用哪种办法,都要加滞空bug的检测修复代码。然后玩家比较特殊,出现这种情况比较少,因为玩家的行为比较复杂多变,特高的高空偶尔卡住时,自己来回身体旋转蹭蹭就摆脱这个锁人的空气碰撞bug了,所以玩家可以随便使用各种飞行做法没有顾虑。
然后这种bug还有一个升级版,就是如果你在一个带斜面的建筑物碰撞上终止飞行下落时触发此bug,有概率形成的不是滞空bug了,而是无限升空bug,人一直垂直上天,这时候你哪怕检测到这人有bug你都动不了他去修正。
所以超越战团本身机制的功能,不会尽善尽美,一步到位,常常需要修补各种暴露的弊端,所以诸君注意取舍和不滥用。


最后是关于碰撞是否会跳出以及对性能的影响问题。
首先对于简单的物体就像我这种单纯的六面体形状的prop animate比attach性能影响大(但是attach人的碰撞如果奇形怪状过于复杂,以至于会让agent骨骼动作产生肢体晃动的过程中和这个碰撞频繁乱七八糟的挤压,这种情况就反过来了)。其次hitbox和collision只要不频繁反复摩擦,产生与人相对位置的频繁改变,是不容易跳出的,attach控好频率一定时间间隔保持一定相对位置即可。最后不用飞时取消碰撞也可以缓解对性能影响,已在百人战场应用多场战斗了,稳定性可以。不过呢代码不是分割的东西,还是要看你其他代码的配合,有的时候两块代码本身没有问题,你合在一起可能就有些奇怪的问题,这个就要你们自己判断了。

来自: iPhone客户端

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2025-9-29 02:55 , Processed in 0.088137 second(s), 22 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表