2016-05-09 24 views
0

iOSのネイティブゲーム開発の初心者です。私は文字の理想的な状態のいくつかのフレームを使ってアニメーションを作成しようとしています。私はRay's Websiteからチュートリアルに従っています。私はすべてうまくやっているように見えますが、私はアニメーションを見ることができません。最初のフレーム(デフォルト)のみ常に表示されます。私はコード&をデバッグします。実際には3つのフレームがすべて存在するが、スクリーン上で何も起こらない点滅するプレーヤーメソッドを訪れています。iOS SpriteKitアニメーションが動作しない

誰かが問題を特定するのに役立ちます。

@implementation GameScene 
{ 
    NSArray *_playerBlinkFrames; 
} 

// Player 
SKNode *_player; 

-(id)initWithSize:(CGSize)size { 
    if (self = [super initWithSize:size]) { 

     [self createPlayer];  
} 
    return self; 
} 

- (void) createPlayer 
{ 
    SKTextureAtlas *playerAnimatedAtlas = [SKTextureAtlas atlasNamed:@"Assets"]; 
    _player = [SKNode node]; 
    SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Idle"]; 
    [_player addChild:sprite]; 

    [sprite setName:@"Ball"]; 

    NSMutableArray *blinkFrames = [NSMutableArray array]; 

    SKTexture *temp = [playerAnimatedAtlas textureNamed:@"Idle.png"]; 
    SKTexture *temp2 = [playerAnimatedAtlas textureNamed:@"Blink.png"]; 
    SKTexture *temp3 = [playerAnimatedAtlas textureNamed:@"LookRight.png"]; 


    [blinkFrames addObject:temp]; 
    [blinkFrames addObject:temp2]; 
    [blinkFrames addObject:temp3]; 

    _playerBlinkFrames = blinkFrames; 
    _player.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)); 
    [self addChild:_player]; 
    [self blinkingPlayer]; 
} 

-(void)blinkingPlayer 
{ 
    [_player runAction:[SKAction repeatActionForever: 
         [SKAction animateWithTextures:_playerBlinkFrames 
             timePerFrame:0.3f 
              resize:NO 
              restore:YES]] withKey:@"blinkingInPlacePlayer"]; 

    return; 
} 

ありがとうございます。

答えて

0

はこれを試してみてください:

// Player 
SKSpriteNode *_player; 

//..// 
SKTextureAtlas *playerAnimatedAtlas = [SKTextureAtlas atlasNamed:@"Assets"]; 

NSMutableArray *blinkFrames = [NSMutableArray array]; 

SKTexture *temp = [playerAnimatedAtlas textureNamed:@"Idle.png"]; 
SKTexture *temp2 = [playerAnimatedAtlas textureNamed:@"Blink.png"]; 
SKTexture *temp3 = [playerAnimatedAtlas textureNamed:@"LookRight.png"]; 


[blinkFrames addObject:temp]; 
[blinkFrames addObject:temp2]; 
[blinkFrames addObject:temp3]; 

_playerBlinkFrames = blinkFrames; 

SKTexture *tempSprite = _playerBlinkFrames[0]; 
_player = [SKSpriteNode spriteNodeWithTexture:tempSprite]; 

私はそれをテストしていませんでしたが、私はあなたがspritenodeでカバーSKNodeプレーヤーを作成していると思います。

私に知らせてください

+0

はい、私はあなたのチュートリアルのチューブからそれに続いていました。これはうまくいく。私はintiWithSize関数_player = [self createNewPlayer]でオブジェクトを初期化する方法も変更しました。 [self addChild:_player]; –

関連する問題