1

我已经丢失了大量有关 box2d 及其端口的信息。但我有一个非常简单的问题,我无法在任何地方获得任何信息。

如何正确计算身体位置。假设我在屏幕上的位置 (10, 20) 有精灵。为什么每个 box2d 计算教程都不同?

例如: - 使用函数 coordPixelToWorld 和 coordWorldToPixel 处理(来自 processing.org)来计算 beetwen 世界和屏幕 - 这是一个有点复杂的函数;- 和引擎有类似的转换 beetwen 世界和屏幕的功能;- actionscript - 在这里我不明白为什么,但每个教程都有获取屏幕坐标并按比例函数划分它。

我问这个问题是因为以上所有内容都有一个共同点:0,0 的屏幕坐标位于左上角。box2d 每个端口的写法都不同吗?

我将不胜感激。

更新

我对 box2d actionscript 没有太大的麻烦。我的问题是:为什么当我将身体位置设置为 (0, 0) 时,它会以简短的文字显示在窗口的左上角。在任何其他 box2d 端口(处理、jbox2d 和引擎 box2d 扩展)中,如果我将主体位置设置为 (0, 0),它将显示在窗口的中心。我知道关于每米像素等的规则。

4

2 回答 2

1

变化的原因是所有形式的 Box2D 都使用米作为其测量单位。这样做的原因是它旨在模拟现实世界的对象。

Box2D 根本不需要视觉表示。当您创建 box2D 模拟时,由开发人员决定在 box2D 的图形渲染中显示什么级别的细节。所以会有一个乘数,代表米到像素的转换。对于 Box2D flash,该比例的默认值为 30px:1m。

所以每个toturial都有转换功能的原因是Box2D使用米,而计算机显示器使用像素。

它将米转换为像素,将像素转换为米。

于 2011-08-05T16:46:18.023 回答
0

In actionscript the centre of a DisplayObject is usually top-left, but Box2D bodies' centre coincides with the barycentric centre (the actual middle of the shape, not the top-left corner). Also the Box2D units are not exactly pixels, but you can easily convert between the two.

I recommend having a look at the Box2DFlash Manual, especially the part on Units and UserData. Ideally you would want to read the whole manual to get your head around Box2D better, which will give you a lot more control.

If you're not interested in the nitty gritty then give the World Construction Kit a try. It should make it easier to setup Box2D worlds.

Box2D WCK

于 2011-08-03T10:36:44.910 回答