绕点Box2D Cocos2d旋转身体

时间:2013-04-25 13:25:48

标签: cocos2d-iphone rotation box2d point

旋转像雷达探测敌人的三角形图像时出现问题。

b2Body *body;
CCSprite *actor;



if (b->GetType() == b2_kinematicBody && myActor == [loader spriteWithUniqueName:@"radar."]){

        radar = b;
        radarSprite = myActor;
    }

这是一个用LevelHelper制作的运动体,我想旋转它。所以我需要它围绕静止点旋转,并向后重复运动。由于它是一个Body而不是一个Sprite,我不知道怎么做到围绕顶点旋转

我有个主意,但我不确定。  如果我旋转CCSprite并将Body移动到sprite.position怎么办?有可能吗?

非常感谢

1 个答案:

答案 0 :(得分:2)

以下是我如何根据他们的精灵更新box2d体的位置和旋转:

// Box2d updates.
// We set position of b2Bodies according to their sprites.
_world->Step(delta, 10, 10);
for(b2Body *b = _world->GetBodyList(); b; b=b->GetNext())
{
    if (b->GetUserData() != NULL)
    {
        GameObject *sprite = (GameObject *)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);
    }
}