我现在有点困惑。如果我从 Box2d 中的夹具中获取我的形状,它会返回与身体和角度的位置相关的点(带有 ->getVertices)。但是不应该在某个地方存储形状实际点的数据吗?
澄清一下:我有一个旋转的多边形形状。现在我想获得多边形的所有实际点。有没有我可以使用的方法?还是我必须计算转换,这对我来说没有多大意义。
我正在为 JavaScript 使用 box2dweb。
我现在有点困惑。如果我从 Box2d 中的夹具中获取我的形状,它会返回与身体和角度的位置相关的点(带有 ->getVertices)。但是不应该在某个地方存储形状实际点的数据吗?
澄清一下:我有一个旋转的多边形形状。现在我想获得多边形的所有实际点。有没有我可以使用的方法?还是我必须计算转换,这对我来说没有多大意义。
我正在为 JavaScript 使用 box2dweb。
是的,您需要使用身体变换来计算当前位置。这些点存储在本地(身体)坐标中,因此移动身体(一个点)不需要更新夹具的所有点。考虑一个物体在一个空白区域移动,没有计算碰撞......物理引擎根本不需要固定点。如果将它们存储在世界坐标中,这些点也会很快失去精度。
如果要绘制夹具,可以像这样(C++)获得点的当前世界位置:
b2Vec2 worldPos = body->GetWorldPoint( localPos );
你得到了身体的变换并将它应用到每个顶点。这会将局部顶点位置转换为世界位置。