前方单位进入战斗状态,后方单位会被挡住,不会绕到前面去,是因为取消了流动效果导致的吗,能怎么处理。
更新:
新版本已经支持流动性可配置,RVOConst.cs用于专门配置微调效果,RVOConst.MOVE_FLUIDITY是RVO单位移动流动性,取值范围0~1,数值越大流动性越强。
插件更新地址: https://assets.efunstudio.cn
以下是原回答:
https://blog.csdn.net/final5788/article/details/142005465?spm=1001.2014.3001.5502#t32
RVO是动态避让系统,设置rvo agent目标点(targetPosition)后会自动向目标点移动避让,单位之间不允许穿透(可简单理解为物理刚体), 每个单位的碰撞半径radius可设置,如果前方被一排单位完全挡住,则会挡住无法通过,直到前方无阻塞。仅当前排单位之间的间距足够通行,后方单位才能通过。
解决方法:
1. 设置rvo agent的碰撞半径radius,降低半径可以通过更窄的通道。
2. 设置rvo agent的timeHorizon,降低数值可以使rvo agent之间距离拉近,密度提升。
3. 设置rvo agent的collisionEnabled为false可以关闭rvo agent的碰撞, 关闭后可穿透。
4. 为rvo agent分层,精准控制哪些兵种之间不发生碰撞,例如可以设置boss不与小兵发生碰撞,以避免前方小兵挡住boss移动。
通过设置layerOccupation:RVO单位分层,与layerIgnore配合用于精准控制不同层之间是否碰撞。
layerIgnore:设置忽略碰撞的单位layer类型。该参数为位枚举,可精准控制忽略一种或多种单位之间的碰撞。如rvoA.layerOccupation = L0, rvoB.layerOccupation = L1; rvoA.layerIgnore = L1表示rvoA不与rvoB碰撞
备用方案:
1. 回退旧版本,使用流动性高的rvo版本。
2. 将流动性高的rvo版本合并到新版。