方框2D - 有没有办法将地面移动b2EdgeShape

时间:2011-04-03 22:44:02

标签: box2d game-physics box2d-iphone

我正在开发一款iPhone游戏,地面是一个长而重复的矩形精灵对象,它在屏幕底部上方延伸约30个像素。我试图将我的地面边缘形状对齐30像素,这样当玩家精灵从跳跃落在地面上时,他将落在地面图像的顶部。当我尝试添加以下代码时,它不起作用:

b2BodyDef groundBodyDef;
groundBodyDef.position.Set(0, 30/PTM_RATIO);

b2Body *groundBody=world->CreateBody(&groundBodyDef);

b2EdgeShape groundLine;
groundLine.Set(b2Vec2(0, 30/PTM_RATIO), b2Vec2(screenSize.width/PTM_RATIO, 30/PTM_RATIO));
groundBody->CreateFixture(&groundLine, 0);

我意识到我可能会在地面上使用矩形形状,但由于我的玩家精灵只与图像的顶部相撞,我宁愿逃脱边缘形状。

1 个答案:

答案 0 :(得分:4)

当您设置形状的位置时(例如,示例中的groundLine.Set()),您将设置相对于它将附加到的身体位置的位置。所以你的身体已经在y = 30,那么你的形状将是另一个30以上。

对于地面实体,我建议将身体位置保持在0,0,然后将夹具添加到您想要的位置 - 通常只有一个地面体。

我还建议使用默认的调试绘图,以便您可以看到实际发生的情况,并立即向您显示问题。