我有一个问题就是杀了我......
我正在使用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);
任何提示?
非常感谢你!!
答案 0 :(得分: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)];