0

我有一个让我想死的问题...

我正在使用 LevelHelper 在 Box2d 中制作关卡。所以我有一个三角形精灵附着在一个三角形的身体上。

现在的问题是我想将那个身体旋转到一个位置,并旋转附加的精灵。

这里有一些代码:

//Detecting my actor and my sprite
if (b->GetType() == b2_dynamicBody && myActor == [loader spriteWithUniqueName:@"radar."]){
        radar = b;
        radarSprite = myActor;
    }

只是想尝试 20 度,但它没有旋转。

 //trying to rotate inside TICK: Method

    float32 b2Angle = -1 * CC_DEGREES_TO_RADIANS(20);
    radar->SetTransform(radar->GetPosition(), b2Angle);
    radarSprite.position = ccp(radar->GetPosition().x,radar->GetPosition().y);

有小费吗?

非常感谢您提前!!

4

1 回答 1

1

你有一个错误,你只旋转了物理体,levelhelper 在 LHSprite 中有一个名为 tranformRotation 的方法,所以你需要这样做:

此方法旋转身体和精灵(如果身体附加到精灵):

//radarSprite is a LHSprite
float32 b2Angle = -1 * CC_DEGREES_TO_RADIANS(20);
[radarSprite transformRotation:b2Angle];
[radarSprite transformPosition:ccp(radar->GetPosition().x,radar->GetPosition().y)];

如果你的身体与精灵分开,你可以这样做:

//radarSprite is a LHSprite
float32 b2Angle = -1 * CC_DEGREES_TO_RADIANS(20);
radar->SetTransform(radar->GetPosition(), b2Angle);
[radarSprite transformRotation:b2Angle];
[radarSprite transformPosition:ccp(radar->GetPosition().x,radar->GetPosition().y)];


编辑:

该方法 spriteWithUniqueName返回一个 LHSprite,但如果你使用 CCSprite,你可以这样做:

//radarSprite is a CCSprite
float32 b2Angle = -1 * CC_DEGREES_TO_RADIANS(20);
radar->SetTransform(radar->GetPosition(), b2Angle);
[radarSprite setRotation:b2Angle];
[radarSprite setPosition:ccp(radar->GetPosition().x,radar->GetPosition().y)];
于 2013-04-24T16:45:22.363 回答