3

这是 XCode SKEmitter 编辑器中的动画(我想在 iPhone 上实现):

在此处输入图像描述

这是 iPhone 上的动画(我不想要这个动画):

在此处输入图像描述

使用此代码:

    let sparkEmmiter = SKEmitterNode(fileNamed: "fireflies.sks")
    self.addChild(sparkEmmiter) // self is a SKScene

    var circle: CGPathRef? = nil
    circle = CGPathCreateWithEllipseInRect(CGRectMake(400, 200, 200, 200), nil)
    let followTrack = SKAction.followPath(circle!, asOffset: false, orientToPath: true, duration: 3.0)
    let followTrackForever = SKAction.repeatActionForever(followTrack)
    //sparkEmmiter.runAction(followTrackForever)
    sparkEmmiter.particleAction = followTrackForever;

这是发射器设置:

在此处输入图像描述

我通过参考这个问题尝试了 runAction 和particleAction ,但它没有像我想要的那样工作......

-----------------更新-------------------------------- --------------

尝试了 hamobi 提到的解决方案(仍然不起作用):

    //If I were you:
    // 1) I'd make a sprite and 
    let texture = SKTexture(imageNamed: "spark")
    let mySprite = SKSpriteNode(texture: texture)
    self.addChild(mySprite)

    // 2) add the emitter in your first example as a child.
    let sparkEmmiter = SKEmitterNode(fileNamed: "fireflies.sks")
    mySprite.addChild(sparkEmmiter)

    // 3) I'd set the emitters targetNode to the scene.
    sparkEmmiter.targetNode = self

    // 4) Then I'd just animate the sprite itself in an arc.
    var circle: CGPathRef? = nil
    circle = CGPathCreateWithEllipseInRect(CGRectMake(400, 200, 200, 200), nil)
    let followTrack = SKAction.followPath(circle!, asOffset: false, orientToPath: true, duration: 3.0)
    let followTrackForever = SKAction.repeatActionForever(followTrack)
    //sparkEmmiter.runAction(followTrackForever)
    sparkEmmiter.particleAction = followTrackForever;

在此处输入图像描述

-----------------更新 2 ------------------------------- ---------------

知道了!感谢 hamobi :D 这是结果 :D:D

在此处输入图像描述

4

1 回答 1

4

如果我是你,我会制作一个精灵并在你的第一个示例中添加发射器作为一个孩子。我将发射器 targetNode 设置为场景。然后我只需将精灵本身设置为弧形。

编辑:

好的,所以您缺少的主要内容是您应该忘记使用particleAction. 使mySprite运行followTrackForever动作。

这是我的代码

//If I were you:
// 1) I'd make a sprite and
let texture = SKTexture(imageNamed: "spark")
let mySprite = SKSpriteNode(texture: texture)
mySprite.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
self.addChild(mySprite)

// 2) add the emitter in your first example as a child.
let sparkEmmiter = SKEmitterNode(fileNamed: "fireflies.sks")
mySprite.addChild(sparkEmmiter)

// 3) I'd set the emitters targetNode to the scene.
sparkEmmiter.targetNode = self

// 4) Then I'd just animate the sprite itself in an arc.
var circle: CGPathRef? = nil
circle = CGPathCreateWithEllipseInRect(CGRectMake(100, 200, 200, 200), nil)
let followTrack = SKAction.followPath(circle!, asOffset: false, orientToPath: true, duration: 3.0)
let followTrackForever = SKAction.repeatActionForever(followTrack)
mySprite.runAction(followTrackForever)

我的粒子截图

在此处输入图像描述

我的粒子在行动

在此处输入图像描述

于 2015-04-01T04:59:48.527 回答