我正在为我的游戏创建一个 box2d 边框,并注意到我实际上可以将我的 body 滑过边框。
如果我把它们扔到边界上,它们就会反弹回来。但当我慢慢地让他们朝这个目标迈进时,他们就简单地通过了。有时,当我有多个实体通过 RevoluteJoint 连接时,关节实际上会缠在边界中并停止滑动。但是当没有加入时,边界不会阻止主体/ Sprite 。
现在,我只在模拟器上进行测试,还没有 iPad 进行测试。那么这个问题与模拟器有关吗?我的运行速度约为 30 fps。
如果不是模拟器问题,有解决办法吗?
我使用的代码是随处可见的代码(稍作修改以满足我的需要:)
b2BodyDef groundBodyDef;
groundBodyDef.position.Set(0,0);
_groundBody = _world->CreateBody(&groundBodyDef);
_groundBody->SetType(b2_staticBody);
b2EdgeShape groundEdge;
b2FixtureDef boxShapeDef;
boxShapeDef.shape = &groundEdge;
//wall definitions
groundEdge.Set(b2Vec2(-winSize.width/PTM_RATIO, (float)20/PTM_RATIO), b2Vec2((winSize.width)/PTM_RATIO, (float)20/PTM_RATIO)); // bottom wall
_groundBody->CreateFixture(&boxShapeDef);
groundEdge.Set(b2Vec2(-winSize.width/PTM_RATIO, (winSize.height-50)/PTM_RATIO), b2Vec2(winSize.width/PTM_RATIO, (winSize.height-50)/PTM_RATIO)); // top wall
_groundBody->CreateFixture(&boxShapeDef);
groundEdge.Set(b2Vec2(-(winSize.width-20)/PTM_RATIO,0), b2Vec2(-(winSize.width-20)/PTM_RATIO, winSize.height/PTM_RATIO)); // left wall
_groundBody->CreateFixture(&boxShapeDef);
groundEdge.Set(b2Vec2((winSize.width-20)/PTM_RATIO, winSize.height/PTM_RATIO), b2Vec2((winSize.width-20)/PTM_RATIO, 0)); // right wall
_groundBody->CreateFixture(&boxShapeDef);
}
最佳答案
如果您使用鼠标关节来移动物体,请尝试将鼠标关节的 collideConnected 设置为 true(默认为 false)。
关于ios - box2d边框不边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16919119/