[LayaAir 2.0]3D物理引擎实现类似constraint方法

Unity的物理引擎Rigidbody有提供constraint机制,用于锁定住某一个轴向的旋转或位移, 但是laya的物理引擎并没有提供这样的机制
我做了一些尝试
  • 自己在onUpdate或onLateUpdate函数中不断的修正需要锁定的轴到原始位置,但是效果并不好,估计因为这两个是按frame(帧)调度的更新函数,而物理调度是在另一个类似Unity中FixedUpdate函数中处理的,所以此举并不可行,laya也没有提供FixedUpdate函数,只能另找解决方法.
  • 在OnCollisionEnter函数里处理, 不幸的是也失败了,因为OnCollisionEnter调用的时候,物体碰撞的速度已经计算完成并已经有过第一次物理移动了,如果有另外的OnCollisionBeforeEnter函数在发生碰撞就算完碰撞后的速度,并将这个速度交由开发者自己再处理一次,就可以解决类似的问题了.
  • 使用box2d,虽然这个可以解决物理方面的问题,这个2d物理系统无法挂载到3d场景中,会报 Uncaught TypeError: this.owner.localToGlobal is not a function TypeError: this.owner.localToGlobal is not a function, 2d的实现似乎并不是3d忽略一个轴这样的方式,它们是不同的坐标系统,所以不通用,而我这边需要用3D的场景和模型,这条路也不可行.
  • 尝试自己修改物理引擎,这个应该是比较可行的方法了,可惜引擎只有编译后的库文件,虽然可以将其格式化后再修改,但是读起来依然很费劲,如果没有其他更好的办法,大概就会尝试这个方法了.

大家还有什么好的办法解决类似的问题么?希望有人可以提供一下解决思路.
已邀请:

要回复问题请先

商务合作
商务合作