0

我对 cocos2d 和 box2d 还很陌生。我正在尝试使用加速度计创建一个游戏水平无尽的跑步者。我的角色从顶部掉下来并且不断向下移动。我遇到的问题是,随着时间的推移,精灵和物理体变得不同步,物理体从精灵上移开,从而导致碰撞时出现奇怪的行为。这仅在设备上运行时才会发生,因为玩家不断向下移动,碰撞在垂直方向上变得不同步,而水平方向保持正确。我的步进功能是:

const float32 timeStep = 1.0f / 30.0f;
const int32 velocityIterations = 5;
const int32 positionIterations = 1;

// step the world
world->Step(timeStep, velocityIterations, positionIterations);
4

1 回答 1

0

我们所说的距离有多远?如果您将 Box2D 主体移动到非常长的距离(数千米的 Box2D 米),您可能会在物理模拟或 cocos2d 位置(或两者)中遇到不准确,这可能会导致您描述的效果。

2D 物理引擎并非设计用于在没有约束的世界中工作(即无限滚动)。如果这就是你正在做的事情,你将不得不想出一个解决方案,让世界受到限制,但玩家没有意识到这一点。一种常见的方法是一旦对象和相关视图通过某个阈值,就将它们的位置重置回(受约束的)世界的顶部。大多数游戏只是将玩家锁定在适当的位置,而是将世界移动到玩家下方,以给人一种无尽运动的印象,而只有背景在移动。

于 2012-10-25T14:00:07.140 回答