[LayaAirIDE 2.0]Laya2.5 物理系统表现异常BUG

BUG演示文字描述
定义宽高0.5方块A的在-0.5,0,0位置,分组为1
定义宽高0.5方块B的在0.5,0,0位置,分组为1
定义宽高0.5方块C的在0,0,-3位置,分组为2
定义半径为0.25的胶囊D的在0,0,-3位置,分组为2
定义半径为0.25的圆柱E的在0,0,-3位置,分组为2 
使用shapecast方法将C目标cast到0,0,3的位置,得到返回值
使用shapecast方法将D目标cast到0,0,3的位置,得到返回值
使用shapecast方法将E目标cast到0,0,3的位置,得到返回值 
Laya2.3的类库 返回结果是 false false false
Laya2.5的类库 返回结果是true true true
Laya2.6的Github版本同2.5,更新日志也没更新到这块所以和2.5表现一致
 
附图和例子
25.png 23.png
已邀请:

NilZ

赞同来自:

结论就是 :1.有重合边的时候,laya反馈为有碰撞和bullet(c++)一致,老版本的laya不正确。 2.检测的精度laya只有小数点后三位,bullet(c++有16位),但可以避免。

NilZ

赞同来自: 恋离飞翼

微信图片_20200323110521.jpg

您好,这是按照你的代码所画的示意图,应该没有画错吧 做shapeCast的x的边界为-0.25 和 +0.25 而A的右边界为-0.25 B的左边界为+0.25
到底这个边界的相接 在射线检测中是否为相交  我在bullet中做了测试 发现在bullet中 测试结果为相交的 所以说新版本的laya返回的结果应该是正确的 laya在2.4更新了 编译bullet的方式 老版本可能存在错误   如果我哪里说的不准确 请你指出 我们共同研究

Recovery

赞同来自:

MARK:对之前发布的“3个正方体碰撞问题”改为“使用正方体,胶囊体,圆柱体分别去碰撞AB正方体
得到的结果在新版本中表现不正确

NilZ

赞同来自:

回复你的关于精度的问题,我在c++版bullet写的demo 精度的大小能达到小数点后16位 ,但是在laya中只能做到小数点后3位。精度laya的确做的不够好, 但是可以避免(在项目中)。
当半径位0.45的时候反馈的是false,这是我测试的结果,是正确的。

NilZ

赞同来自:

我测试了一下球体碰撞shape当半径为0.25时,发生了碰撞,在半径为0.24时候 没有发生碰撞 符合预期的结果  
 

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

商务合作
商务合作