[LayaAir 2.0]如何获取刚体碰撞前的刚体速度

 如果还有别的实现台球碰撞效果的方法我也可以采纳的!尽量和世界真实碰撞接近的方案
 
我想实现台球的碰撞效果,当碰撞时,我拿到法线和碰撞前速度,计算 反弹角度和反弹速度; 
但是吧,OnCollisionEnter这个回调函数里,从rid.lineVelcity属性中获取的到的速度,竟然是碰撞后的;这样导致我无法计算速度的衰减和反弹后的速度
我尝试在update里不断获取当前刚体速度,但是大家也知道,update和物理引擎的计算没在一个时间空间里,所以会有一些BUG出现,比如,update是在发生物理碰撞后才回调的,那么这个速度就不准确喽。。。
 
如果全部依靠物理引擎的话,会出现一些奇怪的碰撞效果,所以无法使用物理引擎模拟,只能依靠计算来模拟
获取碰撞前的速度成了问题;
 
希望对这个引擎的物理引擎吃的比较透彻的同志们能提示一下
已邀请:

nevercai

赞同来自:

试试覆写 Script的onTriggerEnter方法。
或者侦听owner的 Event.TRIGGER_ENTER 事件。
 
然而你台球游戏不是应该设置好每个物体的刚体属性,质量,碰撞属性,摩擦力等,只需要给白球施加一个力就可以吗?为什么还要自己去计算反弹角度和反弹速度。。。

godusoop

赞同来自:

我也碰到了相似的问题,我的问题是在想在laya的3d物理引擎里面使用类似unity的constraint约束,因为laya没有提供这个机制,
我也尝试在onUpdate和onLateUpdate函数里面自己做修正处理,但是效果不尽如人意,因为物理的调度可能是在类似fixedUpdate里面的,laya也没有提供这个.
而且如同你所说的,laya的碰撞回调时机也只有像OnCollisionEnter这样碰撞速度改变之后的回调函数,如果有在碰撞发生时,速度计算之前的回调函数的话,也可以实现自己的控制.
我的问题其实如果可以把box2d的rigidbody挂载到3dscene下面的话,也可以解决我的问题,可惜我尝试后,发现了报错,laya的2d和3d节点不在同一个空间下,导致他们的物理也不可以通用.
还是希望官方能提供更加细致的回调函数让开发者可以有更多的掌控权,现在的机制受到的限制还是太多了.

徘‘’徊·

赞同来自:

楼主大大后面找到解决方法了吗,最近也遇到了这个问题

要回复问题请先

商务合作
商务合作