盒子2D -有没有办法移动地面b2EdgeShape向上



我正在制作一款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);

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

当你设置形状的位置时(例如在你的例子中groundLine.Set()),你是在设置位置相对于主体的位置它将被附加到。你的身体已经在y=30的位置,那么你的形状会再高出30。

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

我还建议使用默认的调试绘制,这样您就可以看到实际发生了什么,它会立即显示问题。

最新更新