Cocos2d. Повернуть одну точку вокруг другой, используя cocos2d

Cocos2d не умеет делать это. Максимум можно изменить anchor point, но эта точка влияет еще и на расположение объекта в пространстве.


@interface Bomb : NSObject {

CCSprite *center;

}

...

@end

- (void)explode
{
BombBullet *bullet = [BombBullet spriteWithFile:@"explosion03.png"];
[[[CCDirector sharedDirector] runningScene] addChild:bullet];

center = [CCSprite spriteWithTexture:bullet.texture];
center.position = explosionPoint;
center.anchorPoint = ccp(-0.5, -0.5);
center.visible = NO;
[[[CCDirector sharedDirector] runningScene] addChild:center];
[center runAction:[CCRotateBy actionWithDuration:1 angle:360]];

CCCallFunc *updateAction = [CCCallFuncN actionWithTarget:self selector:@selector(update:)];
[bullet runAction:[CCRepeatForever actionWithAction:[CCSequence actions:updateAction, [CCDelayTime actionWithDuration:0.01], nil]]];
}

- (void)update:(id)sender
{
BombBullet *bombBullet = (BombBullet *)sender;
bombBullet.rotation = center.rotation;
bombBullet.position = ccpAdd(center.position, center.anchorPointInPoints);
bombBullet.position = ccpAdd(bombBullet.position, ccp(-bombBullet.contentSize.width / 2, -bombBullet.contentSize.height / 2));
bombBullet.position = ccpRotateByAngle(bombBullet.position, center.position, bombBullet.rotation);
}

Только здесь опущено освобождение памяти

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *