Cocos2d iphone box2d中的旋转体和附加精灵

Cocos2d iphone box2d中的旋转体和附加精灵,cocos2d-iphone,rotation,box2d,sprite,Cocos2d Iphone,Rotation,Box2d,Sprite,我有一个问题让我很难受 我正在使用LevelHelper在Box2d中创建标高。所以我有一个三角形的精灵附在一个三角形的身体上 现在的问题是,我想旋转身体的一个位置,并旋转附加的精灵了 这里有一些代码: //Detecting my actor and my sprite if (b->GetType() == b2_dynamicBody && myActor == [loader spriteWithUniqueName:@"radar."]){ rad

我有一个问题让我很难受

我正在使用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);
有什么建议吗


提前非常感谢

如果出现错误,则仅旋转physic主体,levelhelper在LHSprite中有一个名为TransformRotation的方法,因此需要执行以下操作:

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

如果身体与精灵分开,则可以执行以下操作:

//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)];
//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)];

编辑:

方法
spriteWithUniqueName
返回一个LHSprite,但如果使用CCSprite,则可以执行以下操作:

//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)];
//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)];

它看起来很不错,我必须下载LHSprite.h,因为我没有使用该类。我以后再试试。非常感谢你!现在它在这里不起作用了:如果(b->GetType()==b2_dynamicBody&&myActor==[loader spriteWithUniqueName:@“radar.”){radarSprite=(LHSprite*)b->GetUserData();}方法spriteWithUniqueName返回LHSprite,但是如果使用CCSprite,可以使用第二个选项并替换“set”的“transform”。。。。编辑消息。