在我的Box2d游戏中,我发现我必须在游戏循环中更新我的CCSprite位置,以便它正常工作。我已经浏览了Box2D文档,看看有哪些API可以获得b2Body坐标,但我没有看到任何内容,这似乎不清楚。 我应该手动移动每个CCSprite还是有一种简单的方法将屏幕上的所有CCSprite移动到与它们关联的b2Bodys?当b2Body移动时更新CCSprite位置?
有没有人有任何想法如何做到这一点?
谢谢!
编辑1: 这段代码是否将我的世界中的每个精灵都更新为与它们对应的b2Body?这将与x和y轴一起工作,旋转是否正确?
for(b2Body *b = _world->GetBodyList(); b; b=b->GetNext()) {
if (b->GetUserData() != NULL) {
CCSprite *sprite = (CCSprite *)b->GetUserData();
b2Vec2 b2Position = b2Vec2(sprite.position.x/PTM_RATIO,
sprite.position.y/PTM_RATIO);
float32 b2Angle = -1 * CC_DEGREES_TO_RADIANS(sprite.rotation);
b->SetTransform(b2Position, b2Angle);
}
}
看到了这个问题:http://stackoverflow.com/questions/2336825/how-to-set-the-position-of-a-sprite-within-a-box2d-body – LearnCocos2D
啊我明白了。所以这种方法是手动做的,有没有办法自动做或不应该这样做呢? –
没关系,这是自动的,但我没有SpriteClass –