同事今天在讨论一个事情,box2d中,body不可以直接设置位置,这样是不合理的,因为在物理的世界,你去左右它的物理检测。它就没有存在的必要了。但是,有人就想直接用box2d的碰撞。不用物理模拟。怎么办,所以这里有一个解决方法。
for(b2Body* body = world->GetBodyList(); body; body = body->GetNext()) { if (body->GetUserData() != NULL) { CCSprite* sprite = (CCSprite*)body->GetUserData(); if (sprite) { b2Vec2 post = b2Vec2((float)(sprite->getPosition().x / PT_RATIO), (float)(sprite->getPosition().y / PT_RATIO)); float angle = (CCFloat)CC_DEGREES_TO_RADIANS(sprite->getRotation()); body->SetTransform(post, angle); } }