【问题标题】:Make explosion animation SKaction and remove制作爆炸动画SKaction并移除
【发布时间】:2015-10-21 18:20:23
【问题描述】:

当两个精灵节点发生碰撞时,我想为我的游戏制作动画。所以我创建了这个函数:

func contactEntreMeteorites(Meteorites : SKSpriteNode , Meteorites2 : SKSpriteNode){

        Meteorites.removeFromParent()
        Meteorites2.removeFromParent()

        let ExplosionTexture1 = SKTexture(imageNamed: "Explosion1.png")
        let ExplosionTexture2 = SKTexture(imageNamed: "Explosion2.png")
        let ExplosionTexture3 = SKTexture(imageNamed: "Explosion3.png")
        let ExplosionTexture4 = SKTexture(imageNamed: "Explosion4.png")
        let ExplosionTexture5 = SKTexture(imageNamed: "Explosion5.png")
        let ExplosionTexture6 = SKTexture(imageNamed: "Explosion6.png")
        let ExplosionTexture7 = SKTexture(imageNamed: "Explosion7.png")
        let ExplosionTexture8 = SKTexture(imageNamed: "Explosion8.png")
        let ExplosionTexture9 = SKTexture(imageNamed: "Explosion9.png")
        let ExplosionTexture10 = SKTexture(imageNamed: "Explosion10.png")
        let ExplosionTexture11 = SKTexture(imageNamed: "Explosion11.png")
        let ExplosionTexture12 = SKTexture(imageNamed: "Explosion12.png")

        let animateExplosion = SKAction.sequence([
            SKAction.waitForDuration(0, withRange: 0),
            SKAction.animateWithTextures([ExplosionTexture1,ExplosionTexture2,ExplosionTexture3,ExplosionTexture4,ExplosionTexture5,ExplosionTexture6,ExplosionTexture7,ExplosionTexture8,ExplosionTexture9,ExplosionTexture10,ExplosionTexture11,ExplosionTexture12 ], timePerFrame: 0.1)
            ])

        Explosion = SKSpriteNode(texture: ExplosionTexture1)
        Explosion.position = CGPointMake(Meteorites.position.x, Meteorites.position.y)
        Explosion.runAction(animateExplosion)
        self.addChild(Explosion)

    }

这段代码运行良好,但我不知道如何在我的SKAction sequence animateExplosion 完成后删除SpriteNode“Explosion”。

感谢您的帮助 :) 对不起我的英语我是法国人 ;)

【问题讨论】:

  • 你真的应该使用循环来填充纹理数组,然后将这个数组传递给animateWithTextures
  • 如何制作这个循环?
  • 类似for var i = 1; i <= 12; i++ { explosionTextures.append(SKTexture(imageNamed: "Explosion\(i).png")) }

标签: swift sprite-kit swift2


【解决方案1】:

您实施了错误的方法。代替runAction:,实现runAction:completion:completion 方法将在完成时被调用!所以这是移除爆炸节点的地方。

【讨论】:

    【解决方案2】:

    所以这就是解决方案:

    Explosion = SKSpriteNode(texture: ExplosionTexture1)
            Explosion.position = CGPointMake(Meteorites.position.x, Meteorites.position.y)
            self.addChild(Explosion)
            Explosion.runAction(animateExplosion, completion : {self.Explosion.removeFromParent()})
    

    【讨论】:

    • 这不是论坛;您不需要发布“谢谢”作为答案。接受马特的回答,你已经完成了。
    • 好的,我不会再这样做了^^
    猜你喜欢
    • 2011-12-25
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多