1

敵を検出するレーダーのように三角形の画像を回転させると問題が発生します。

b2Body *body;
CCSprite *actor;



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

        radar = b;
        radarSprite = myActor;
    }

LevelHelperで作ったキネマティックBodyなので回転させたいです。そのため、静的な点を中心に回転し、後方への動きを繰り返す必要があります。スプライトではなくボディなので、頂点を中心に回転させる方法がわかりません。

アイデアはありますが、よくわかりません。CCSprite を回転させて Body を sprite.position に移動するとどうなりますか? 出来ますか?

どうもありがとうございました

4

1 に答える 1

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);
    }
}
于 2013-04-30T08:57:15.563 に答える