我正在开发一款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);
我意识到我可能会在地面上使用矩形形状,但由于我的玩家精灵只与图像的顶部相撞,我宁愿逃脱边缘形状。
答案 0 :(得分:4)
当您设置形状的位置时(例如,示例中的groundLine.Set()),您将设置相对于它将附加到的身体位置的位置。所以你的身体已经在y = 30,那么你的形状将是另一个30以上。
对于地面实体,我建议将身体位置保持在0,0,然后将夹具添加到您想要的位置 - 通常只有一个地面体。
我还建议使用默认的调试绘图,以便您可以看到实际发生的情况,并立即向您显示问题。