私の環境はCocos2dのiPhoneです。
これを行う正しい方法はわかりませんが、スプライト アニメーションを使用してゲーム内のプレイヤーを 1 歩前進させようとしています。
まず参考までに、後のユーザーのためにアニメーションを NSDictionary にロードする init メソッドの一部を次に示します。
-(id) init
{
if( (self=[super init]) ) {
..
..
NSMutableArray *walkUpFrames = [NSMutableArray array];
[walkUpFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"player01.png"]];
[walkUpFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"player02.png"]];
[walkUpFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"player03.png"]];
NSMutableArray *walkDownFrames = [NSMutableArray array];
[walkDownFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"player04.png"]];
[walkDownFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"player05.png"]];
[walkDownFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"player06.png"]];
NSMutableArray *walkLeftFrames = [NSMutableArray array];
[walkLeftFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"player07.png"]];
[walkLeftFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"player08.png"]];
[walkLeftFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"player09.png"]];
NSMutableArray *walkRightFrames = [NSMutableArray array];
[walkRightFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"player10.png"]];
[walkRightFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"player11.png"]];
[walkRightFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"player12.png"]];
self.walkingFrames = [NSDictionary dictionaryWithObjectsAndKeys:
walkUpFrames, @"up",
walkDownFrames, @"down",
walkLeftFrames, @"left",
walkRightFrames, @"right",
nil];
......
}
return self;
}
最初に、このコードを試してプレーヤーを移動し、スプライトを新しい位置に移動してアニメーションを実行しましたが、スプライトはすぐにその位置に移動してアニメーションを実行しましたが、これは良くありません。
-(void)setPlayerPosition:(CGPoint)position {
CCAnimation *walkAnim = [CCAnimation animationWithFrames:[self.walkingFrames valueForKey:@"right"] delay:0.05 ];
self.walkAction = [CCAnimate actionWithAnimation: walkAnim restoreOriginalFrame:YES];
[_player runAction:_walkAction];
_player.position = position;
}
CCMoveTo を使用すると思われますが、animationWithFrames で使用する方法がわかりません。何か案は?(コード例を提供してください)
-(void)setPlayerPosition:(CGPoint)position {
self.walkAction = [CCMoveTo actionWithDuration:0.1 position:position];
[_player runAction:_walkAction];
}
返信ありがとうございます。