推荐一个支持定点数的物理引擎 Rapier,物理帧同步刚需

wasm 跟 jit 没关系,wasm 本身就不支持 jit

根据我自己的理解, 我可能理解错了,

wasm应该是一层中间代码, 目标对象是虚拟机.
自己本身并不能真正执行. 需要被转译到各个不同的平台, 或者被虚拟机解释执行
所以有个jit的问题

但是好像wasm也可以aot, 没有仔细研究过了

供参考:
https://www.jianshu.com/p/4638581d1493

WebAssembly 是跑在 VM 里的,官方文档里有明确表明其是不支持 AOT 为机器码的。
我理解大部分说 wasm AOT 的,是指从 C 或其它语言编译到 wasm 的过程。

2赞

确定性物理引擎,用户零零散散的,都喊了几年了,难啊.

mark!

建议官方可以集成进来
目前使用rapier wasm版和bullet wasm版相比, 效能几乎感受不出差异

使用了rapier2d-compat兼容版本,web上都没问题,但放安卓真机上,会在调用WebAssembly.instantiate时阻塞住,然后就没有然后了……

1赞

这个API里没有看到有定点数相关的接口啊

我用npm装,在业务层使用的时候

报这个错,有知道怎么改的吗?我放的位置不对?

怎么解决的 我也碰到了…

没解决 :rofl:

库要用@dimforge/rapier3d-compat 或@dimforge/rapier2d-compat
然后tsconfig.json要里的compilerOptions,添加"allowSyntheticDefaultImports": true

使用时直接
import RAPIER from ‘@dimforge/rapier2d-compat’;

import RAPIER from ‘@dimforge/rapier3d-compat’;

:100:谢谢大佬,有时间我再试试 :partying_face:

感谢 安装也能读取到RAPIER 但是调用api就报错了 new RAPIER.World就undefined了. 是wasm的原因?
你是怎么用的~

TA的官方文档有写
要先调用Rapier.init().then(()=>{})
才行以进行其他api调用,init主要就是异步加库wasm

1赞

你好,请问打包成微信小游戏报以下错误,WebAssembly.instantiate: first argument must be a string。有办法解决吗?
https://forum.cocos.org/t/topic/152688

这个要去ta 的github项目里,找一下WebAssembly.instantiate 的处理改了再重新打包一个版本来用了

1赞

试了吗?为啥我还是不好使

没有,没排期。

你是不是直接调ta库里的东西?按我的import RAPIER from ‘@dimforge/rapier2d-compat’;设置后, 每次都必须是RAPIER.Rigidbody这様, 你不能用import {Rigidbody} from ‘@dimforge/rapier2d-compat’, 这様调会显示Rigidbody undefine