アニメーション化されたスプライトがあります:
#import <Foundation/Foundation.h>
#import "cocos2d.h"
@interface Raider : CCSprite
{
NSUInteger baseX;
NSUInteger baseY;
BOOL takeItem;
CCAction *_walkAction;
CCAction *_moveAction;
CCAnimation *walkAnim;
}
@property (nonatomic) NSUInteger baseX;
@property (nonatomic) NSUInteger baseY;
@property (nonatomic) BOOL takeItem;
- (id) initRaider:(NSUInteger)x andY: (NSUInteger)y;
- (void) setTaken;
@property (nonatomic, retain) CCAction *walkAction;
@property (nonatomic, retain) CCAction *moveAction;
@property (nonatomic, retain) CCAnimation *animation;
-(void)stopAnim;
-(void)startAnim;
@end
そして Raider.m
#import "Raider.h"
@implementation Raider
@synthesize baseX;
@synthesize baseY;
@synthesize takeItem;
@synthesize moveAction = _moveAction;
@synthesize walkAction = _walkAction;
@synthesize animation = walkAnim;
- (id) initRaider:(NSUInteger)x andY: (NSUInteger)y
{
[self initWithFile:@"10001.png"];
self.walkAction = nil;
self.animation = nil;
self.position = ccp(x,y);
baseX = x;
baseY = y;
takeItem = NO;
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"pirate.plist"];
NSMutableArray *walkAnimFrames = [NSMutableArray array];
for(int i = 1; i <= 9; ++i)
{
[walkAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:
[NSString stringWithFormat:@"1000%d.png", i]]];
}
self.animation = [CCAnimation animationWithFrames:walkAnimFrames delay:0.1f];
self.walkAction = [CCRepeatForever actionWithAction: [CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]];
[self runAction:_walkAction];
return self;
}
- (void) setTaken
{
[self setTexture:[[CCTextureCache sharedTextureCache] addImage:@"raiderItem.png"]];
}
-(void)stopAnim
{
[self pauseSchedulerAndActions];
}
-(void)startAnim
{
[self resumeSchedulerAndActions];
}
@end
私のシーンでは、中心にオブジェクトがあります。すべてのオブジェクトを中心に向けて回転させる必要があり、中心に到達したら回転させてスポーン ポイントに戻します。では、アニメーション化されたスプライトを他のスプライトの中心に回転させるにはどうすればよいでしょうか? スクリーンショットで現在の様子を確認できます。