使用SpriteKit节点的路径粒子效果

Dra*_*lex 13 path particles sprite-kit skemitternode swift

我正在使用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)
    }
}
Run Code Online (Sandbox Code Playgroud)

Dio*_*son 11

要实现类似Duet的效果,您需要particle成为trailed节点的子节点并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)
}
Run Code Online (Sandbox Code Playgroud)

我能够得到类似的效果,最终创建了一个Playground来演示它.检查它在这里.

演示二重奏的小道效果