Box2d - 从身体获得夹具的宽度,或者我应该尝试?

时间:2017-03-06 16:17:08

标签: c++ box2d

我已经阅读了一些有关此问题的帖子,但他们并不是很清楚。 因此..如何找到一个夹具的宽度?我知道很热,可以访问夹具和所有这些,但不知道最后一部分。特别是,我不知道如何以最有效的方式执行此操作,如果您最好将float变量存储为body的userData。

谢谢,非常感谢!

1 个答案:

答案 0 :(得分:0)

您可以通过两种方法完成此任务:

1)将形状附加到灯具,然后使用形状值。无需以这种方式访问​​宽度,因为您将是定义它的人。理想情况下,大小应该是班上的成员。

例如:

m_player->m_body->SetTransform(m_player->m_position,0.f);
b2AABB aabb;
bodyShape.ComputeAABB(&aabb,m_player->m_body->GetTransform(),0);

Center = m_player->m_body->GetFixtureList()->GetAABB(0).GetCenter();
LowerBound = m_player->m_body->GetFixtureList()->GetAABB(0).lowerBound;
HigherBound = m_player->m_body->GetFixtureList()->GetAABB(0).lowerBound;

从那时起,您可以使用您的班级成员来访问位置和大小。如果我知道场景中每个对象(玩家)应该是什么,那就是我要采用的方法。

2)如果你有一个案例但是你不想在初始化时定义大小,那么你需要在形状周围创建一个AABB,然后从那里,你可以计算大小AABB的最小和最大点。如果对象旋转,则需要计算OBB。

例如:

{{1}}

然后使用此信息计算宽度。

此信息可从Box2d文档(http://box2d.org/manual.pdf

中找到