1

我正在开发一款 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);

我意识到我可以使用矩形作为地面,但由于我的玩家精灵只与图像的顶部发生碰撞,我宁愿使用边缘形状。

4

1 回答 1

4

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

对于地面主体,我建议将主体位置保持在 0,0,然后在您想要的位置添加固定装置 - 通常只有一个地面主体。

我还建议使用默认的调试绘图,这样您就可以看到真正发生了什么,并立即向您显示问题。

于 2011-06-17T04:21:04.493 回答