Closed 06wj closed 2 weeks ago
这些导出是给引擎内部用的。现在导出的都是类似 ccClosestConvexCallback_getCollisionShapePtr 这样的接口,你是直接调用这样的接口?
主要原因是现在引擎的 sweepClosest 只有normal和position,没有返回这个 HitFraction 信息,我想改下发现 bullet 里没有给 wasm 导出这个接口。
需要这个信息是因为我想知道 sweep 发生碰撞时,sweep的真正位置。
sweepPosition.lerpVectors(worldRay.origin, worldRay.end, hitFraction);
现在的 PhysicsRayResult 是没有 HitFraction。你是想在 PhysicsRayResult 加入 HitFraction 吗?你打算怎么改呢?
我是可以加接口获取 HitFraction。
现在的 PhysicsRayResult 是没有 HitFraction。你是想在 PhysicsRayResult 加入 HitFraction 吗?你打算怎么改呢?
是的,result 里加 HitFraction 或者 直接加算好的 sweepPosition 都可以
但不是所有的 result 都有 HitFraction 吧?
但不是所有的 result 都有 HitFraction 吧?
raycast 类的应该都有
上面的 PR 修复了这个问题。你可以试一下,不过得更新下第三方库:https://github.com/cocos/cocos-engine-external/pull/462
cannon.js, builtin 和 physx 都没有类似的字段。所以没法加这个。
对于 raycast,HitFraction可以用过 distance/maxDistance 算出
对于 sweep,cocos 的实现
PhysicsRayResult 的返回值有 distance,而 max distance 是传入的值。那你的需求是什么呢?
PhysicsRayResult 的返回值有 distance,而 max distance 是传入的值。那你的需求是什么呢?
sweep时,distance应该代表sweep start position 与 碰撞点距离还是sweep start position 与 sweep end position 的距离,如果是后者我就不需要 HitFraction,如果前者我就需要
现在看起来 cocos 的实现没统一
distance应该代表sweep start position 与 碰撞点距离还是sweep start position 与 sweep end position 的距离
如果发生碰撞,那么 sweep end position 和碰撞点一致。如果是没发生碰撞,那么没有碰撞点,sweep end position 和 max distance 一致。
你的意思是没有发生碰撞时,distance 出问题了?
distance应该代表sweep start position 与 碰撞点距离还是sweep start position 与 sweep end position 的距离
如果发生碰撞,那么 sweep end position 和碰撞点一致。如果是没发生碰撞,那么没有碰撞点,sweep end position 和 max distance 一致。
你的意思是没有发生碰撞时,distance 出问题了?
看这张图,红线是和sweep end position 的 distance,绿线是和碰撞点的distance
我的需求其实就是想要红色线的终点的位置,bullet上的我测试过现在满足需求了
但不是所有的物理引擎都提供这个值。可能得改成可选变量。
Cocos Creator version
3.5.0
System information
mac
Issue description
cocos bullet库中,c++中的ccClosestConvexResultCallback.getClosestHitFraction没有导出到wasm,sweepTest需要这个信息判断sweep的精确位置
https://github.com/cocos/cocos-ammo.js/blob/a9191a7992460e7fa37a9bd46d08b5eb8898cbfc/bullet/src/extensions/ccConvexCastCallBack.h#L71
Relevant error log output
No response
Steps to reproduce
no need
Minimal reproduction project
No response