簡體   English   中英

iOS SpriteKit動畫不起作用

[英]iOS SpriteKit animation not working

我是iOS原生游戲開發的新手。 我正在嘗試使用某些幀為角色的理想狀態創建動畫。 我正在遵循Ray網站上的教程。 看起來我一切都很好,但是看不到動畫在起作用。 始終僅可見第一幀(默認)。 我調試了代碼,它確實是在訪問閃爍的播放器方法,其中所有3幀也都存在,但屏幕上沒有任何反應。

如果有人可以指導/幫助我確定問題,那就太好了。

@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;
}

謝謝。

嘗試這個:

// 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播放器。

讓我知道

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM