【问题标题】:Sprite Kit create animated objectSprite Kit 创建动画对象
【发布时间】:2014-02-13 19:03:16
【问题描述】:

我有以下代码来创建动画纹理:

-(void) setUpActions {
    SKTextureAtlas * atlas = [SKTextureAtlas atlasNamed:@"player"];

    // Running player animation
    SKTexture * runTexture1 = [atlas textureNamed:@"player1.png"];
    SKTexture * runTexture2 = [atlas textureNamed:@"player2.png"];
    SKTexture * runTexture3 = [atlas textureNamed:@"player3.png"];
    SKTexture * runTexture4 = [atlas textureNamed:@"player4.png"];
    SKTexture * runTexture5 = [atlas textureNamed:@"player5.png"];
    SKTexture * runTexture6 = [atlas textureNamed:@"player6.png"];
    SKTexture * runTexture7 = [atlas textureNamed:@"player7.png"];
    SKTexture * runTexture8 = [atlas textureNamed:@"player8.png"];

    NSArray * runTexture = @[runTexture1, runTexture2, runTexture3, runTexture4, runTexture5, runTexture6, runTexture7, runTexture8];

    runAnimation = [SKAction animateWithTextures:runTexture timePerFrame:0.06 resize:YES restore:NO];

    SKSpriteNode * playerNode = (SKSpriteNode *)[self childNodeWithName:@"player"];
    [playerNode runAction:[SKAction repeatActionForever:runAnimation]];
}

这会创建精灵节点并以另一种方法添加到场景中:

-(SKSpriteNode *)createPlayer {
    SKSpriteNode *player = [SKSpriteNode spriteNodeWithImageNamed:@"player"];
    player.position = CGPointMake(100, 160);
    player.name = @"player";
    player.zPosition = 100;

    return player;
}

这样做,我不得不创建一个具有静态图像的对象并用动画纹理覆盖它。如何创建一个没有默认静态图像的动画对象?

【问题讨论】:

    标签: ios objective-c sprite-kit


    【解决方案1】:

    动画动作只能在实际实例化的 SKSpriteNode 对象上执行,但是,您可以只创建一个“空白”节点,然后在其上运行动画动作:

    SKSpriteNode *player = [SKSpriteNode node]; // instead of the static player sprite
    

    或者,如果您希望空白节点具有特定的大小,以便它在动画之前响应特定区域中的触摸/碰撞,例如,尝试一个清晰的矩形:

    SKSpriteNode *player = [SKSpriteNode spriteNodeWithColor:[SKColor clearColor] size:(CGSizeHere)];
    

    或者也许您想使用动画的第一帧作为精灵的纹理:

    SKTexture *temp = runTexture[0];
    SKSpriteNode *player = [SKSpriteNode spriteNodeWithTexture:temp];
    

    【讨论】:

    • 效果很好!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    相关资源
    最近更新 更多