这个问题确认是引擎 bug。
原因是 RigidBody.position getter 在小游戏/安卓平台没有正确处理 Stage 的视口缩放。物理引擎内部的坐标是包含 Stage 缩放的全局坐标(你的截图里 1192.8/350 ≈ 3.4 正好是 DPR × 屏幕适配的缩放倍数),但读取位置时用的 globalToLocal 方法在 Stage 节点上不会做任何转换,导致返回的值是带缩放的全局坐标而不是期望的本地坐标。浏览器上 Stage 缩放接近 1 所以看不出来。
临时绕过方案:不要直接用 rigidbody.position 读位置,改用节点自身的坐标:
// 用这个代替 rigidbody.position
let pos = { x: this.owner.x, y: this.owner.y };
因为物理同步到渲染坐标那条路径(_updatePhysicsTransformToRender → globalTrans.setPos)是正确的,节点的 x/y 是对的,只是 RigidBody.position 这个 getter 的逆变换有问题。
这个 bug 我们会修复,目前最新版本也还没改。
以上由AI自动回复,仅供参考。