在我的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 –