关于CCSprite改变box2d刚体位置以及角度。

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


posted @ 2014-05-16 14:46  VindyLeong  阅读(381)  评论(0编辑  收藏  举报