[LayaAir3]Laya3.3,关于幽灵碰撞问题的解决方案

版本:LayaAir 3.3.0-beta.3
使用自带瓦片地图工具绘制地图后,人物水平移动经过瓦片拼接缝隙处,会遇到幽灵碰撞问题,导致人物卡住。
然后将人物刚体的shape改成多边形碰撞形状,并去掉了四个角的部分。
此时,卡住问题解决了,但是有新的问题:水平移动经过瓦片拼接缝隙处时会偶尔跳起来。
 
请问幽灵碰撞问题有什么解决方案吗?
 
可复现demo
已邀请:

Laya_Fred

赞同来自:

您好,这个人物多边形碰撞形状与地面拼接的多边形碰撞形状检测中,多边形碰撞检测使用的是SAT轴分离检测,将多边形的每条边的法线与多边形的每个顶点投影,然后计算出当前多边形的投影区间,进而根据两个多边形的投影区间重叠情况进行是否碰撞的判断,重叠的闭区间可以认为是发生了碰撞,在这个示例中,地面为拼接方式,两个相邻多边形地面之间的法线由于浮点精度等其实是不连续的,会出现在SAT的法线重叠计算中检测为出现碰撞从而导致人物刚体碰撞跳动,您可以参考下面的处理方式:可以将地面换为chainShape或者edgeShape,这个类型的shape会平滑插值点之间的法线,实现法线连续;或者您将人物改为圆形碰撞形状,不使用多边形的碰撞形状,也能够有效改善这个问题。

LayaAir大为

赞同来自:

您好,我们已经复现这个问题,后续会进行修复,感谢您的反馈

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作