所以在我的游戏中我集成了 Cocos2D + Box2D。我知道不建议这样做,但我让我的 b2Bodys 跟随我的 CCSprites,因为我只需要 Box2D 的碰撞部分。无论如何,使用 PhysicsEditor,我已经创建了最有效的身体形状,并且我的游戏通常以 60FPS 运行良好。我唯一的问题是,我想在这里为最坏的情况做准备。假设在非常罕见的情况下(例如万分之一),游戏会延迟 5 秒,因此 FPS 约为 10FPS。这将导致我的主角不会与它下面的平台发生碰撞。反过来,它会使角色跌落平台,游戏会意外结束。所以总的来说,我只想在发生这种情况时制定一个后备计划。
所以这就是我调用 Box2D 步骤的方式:
world->Step(1/60.0f ,8, 8);
然后在我的更新方法中,我这样做是为了检测碰撞:
std::vector<b2Body *>toDestroy;
std::vector<MyContact>::iterator pos;
for(pos = _contactListener->_contacts.begin();
pos != _contactListener->_contacts.end(); ++pos) {
MyContact contact = *pos;
b2Body *bodyA = contact.fixtureA->GetBody();
b2Body *bodyB = contact.fixtureB->GetBody();
if (bodyA->GetUserData() != NULL && bodyB->GetUserData() != NULL) {
CCSprite *spriteA = (CCSprite *) bodyA->GetUserData();
CCSprite *spriteB = (CCSprite *) bodyB->GetUserData();
if (spriteA.tag == 1 && spriteB.tag == 2) {
toDestroy.push_back(bodyA);
} else if (spriteA.tag == 2 && spriteB.tag == 1) {
toDestroy.push_back(bodyB);
}
}
}
那么我将如何调整我现在正在做的事情来处理我上面解释的可能情况呢?谢谢!