在 Box2D 中计算方形夹具位置的最简单方法是什么?

What's the easiest way to calculate the position of a square fixture in Box2D?

我正在使用 C++ Box2D 库。我创建了一个 body 并向其添加了多个方形灯具。这些方形固定装置偏离 body 位置(类似于此处 "multiple fixtures" 部分中所做的:https://www.iforce2d.net/b2dtut/fixtures)。

我的想法是让渲染系统遍历固定装置并将它们绘制到屏幕上。但是,我似乎找不到检索夹具的 X、Y 和角度的方法。当踏入我的 Box2D 世界时,body X/Y/rotation 位置发生变化,从而改变了灯具的 X/Y/rotation psoition。

有没有一种简单的方法可以从方形灯具中提取此信息?我可以自己计算得出位置,但是,Box2D 不提供解决方案似乎很奇怪。

根据您的描述,您似乎需要一个工具来计算所有内容的位置。我在这方面可能是错的,但我在您使用的产品的文档中看到的最接近的东西是 "Ray Casting" 和 "AABB testing"。两者都在文档的 World Querying 部分进行了描述。

  1. 灯具本身没有任何位置或变换。

  2. 形状有局部点(例如 b2CircleShape 有一个中心,b2PolygonShape 有一个顶点列表)。但是,形状可以在多个 fixtures/bodies 中重复使用。因此,让他们知道他们所依附的任何 fixtures/bodies 是没有意义的。

要获取形状在世界 space 中附加到物体的位置,只需使用物体的 GetWorldPoint 方法:

body.GetWorldPoint(p);

其中 p 是附加到该物体的形状的任何局部点(例如 b2CircleShape 的位置或 b2PolygonShape 的顶点)。