同事今天在讨论一个事情,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);
}
}