使用 SpriteKit 的 Node 路径粒子效果

Posted

技术标签:

【中文标题】使用 SpriteKit 的 Node 路径粒子效果【英文标题】:Node's path particle effect with SpriteKit 【发布时间】:2015-02-12 02:17:15 【问题描述】:

我正在使用 Swift、Sprite Kit 和 Xcode 6,

我想在SpriteKit中创建一个粒子效果有点像ios游戏“Duet”中球的粒子效果,但我不知道如何进行,我设法创建了一个粒子效果,但不是像这个游戏中的粒子跟随一个节点并绘制节点的路径......

这是我的代码:

let firstCircle = SKSpriteNode(imageNamed: "Circle")
let particle = SKEmitterNode(fileNamed: "FirstParticle.sks")

override func didMoveToView(view: SKView)

    firstCircle.physicsBody = SKPhysicsBody(circleOfRadius: 7)
    firstCircle.physicsBody?.affectedByGravity = false

    particle.targetNode = firstCircle

    addChild(firstCircle)
    addChild(particle)


override func touchesBegan(touches: NSSet, withEvent event: UIEvent)
        
    for touch: AnyObject in touches
    
        firstCircle.position = touch.locationInNode(self)
    


override func touchesMoved(touches: NSSet, withEvent event: UIEvent)

    for touch: AnyObject in touches
    
        firstCircle.position = touch.locationInNode(self)
    

【问题讨论】:

将发射器节点的targetNode属性设置为您希望它跟随的节点 我已经做到了,粒子正在跟随我的节点,但没有任何“路径”效果,如轨迹 你能发布你的代码吗? 我只发了精华部分,不是全部,因为太长了 我怀疑你是否可以用粒子创建这种效果。 【参考方案1】:

要实现类似二重奏的效果,您需要 particle 成为尾随节点的子节点,并将 targetNode 设置为父场景。 targetNode 控制粒子渲染为哪个节点的子节点。

particle是拖尾节点的子节点时,会以拖尾节点为原点发射粒子。将targetNode 更改为父场景会在尾随节点移动时留下已经发射的粒子。

此代码应该可以工作,但您可能需要微调 FirstParticle.sks

let firstCircle = SKSpriteNode(imageNamed: "Circle")
let particle = SKEmitterNode(fileNamed: "FirstParticle.sks")

override func didMoveToView(view: SKView)

    firstCircle.physicsBody = SKPhysicsBody(circleOfRadius: 7)
    firstCircle.physicsBody?.affectedByGravity = false

    particle.targetNode = self

    addChild(firstCircle)
    firstCircle.addChild(particle)

我能够获得类似的效果,并最终创建了一个 Playground 来演示它。看看here。

【讨论】:

感谢您的回答。你知道粒子编辑器的什么配置会使粒子(FirstParticle.sks)看起来类似于二重奏中的轨迹吗?再次感谢。 查看编辑。我上传了一个完整的 Swift Playground 演示效果。您可以从那里的粒子 sks 文件开始,并根据需要对其进行修改。 不客气!如果您对操场有任何问题,请告诉我。 @NoahCovey 你能确保接受这个赏金答案吗? 刚刚做到了!再次感谢

以上是关于使用 SpriteKit 的 Node 路径粒子效果的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS7 中使用 SpriteKit 添加粒子

在 SpriteKit 中使用 SKEmitterNode 和粒子创建轨迹

SpriteKit代码动态调整sks文件中粒子的颜色

更改 spritekit 粒子颜色

Xcode 5 SpriteKit 粒子发射器未出现在编辑器中

SceneKit:在 SCNView 上渲染 SpriteKit 粒子系统时应用程序崩溃,当所有代码似乎都是系统代码的一部分时如何调试