【问题标题】:Box2d physics body becoming out of sync with Cocos2d spriteBox2d 物理体与 Cocos2d 精灵不同步
【发布时间】:2012-10-25 22:00:07
【问题描述】:

我对 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);

【问题讨论】:

  • 你能告诉更多细节吗,不同步的样子?截图或视频很有用。
  • 您确定要更新每个 box2D 刻度上的精灵位置吗?

标签: iphone ios cocos2d-iphone box2d


【解决方案1】:

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

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

【讨论】:

  • 距离非常大,大约 20k 像素。看来我必须想出一个解决方案并尝试您推荐的方法。多谢。顺便说一句,这本书很棒,我从你的书和 kobold2d 中学到了很多很棒的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多