抱歉我的英文,
我正在使用BOX2D,我有一个作为Fixture的tile,以及一个DynamicBody的玩家。 当我单击鼠标上的方向时,我调用方法setLinearVelocity,然后播放器开始向左或向右移动,如下所示:
的 的 __ _ __ _ __ _ 0 _ __ _ __ _ _
其中0 =玩家,_ =图块。
我想知道如何判断玩家是否在平台的最后,即:
的 的 __ _ ___ _0
并阻止它移动或其他任何东西。
我尝试使用Contact Listener的endContact事件,其中我调用了applyImpulse(),它将对象拉开,但它没有那么好用。
我还想到了获得夹具的长度,然后通过计算玩家位置相对于夹具的相对性,我可以得到终点,当它们都碰到时,但我没有找到夹具的“尺寸”。 / p>
有人知道这个问题的解决方案吗?
答案 0 :(得分:0)
不要使用联系人监听器。只做一些几何计算。首先获得圆形夹具尺寸或多边形夹具顶点,并检测播放器是否位于瓷砖的边缘。要获得上述信息,请执行以下操作:
for (b2Fixture* fixture = body->GetFixtureList(); fixture; fixture = fixture->GetNext())
{
b2Shape::Type shapeType = fixture->GetType();
if ( shapeType == b2Shape::e_circle )
{
b2CircleShape* circleShape = (b2CircleShape*)fixture->GetShape();
auto radus = circleShape->m_radius;
}
else if ( shapeType == b2Shape::e_polygon )
{
b2PolygonShape* polygonShape = (b2PolygonShape*)fixture->GetShape();
auto verices = polygonShape->m_vertices;
}
}