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)
    }
}
4

1 回答 1

14

要获得类似二重奏的效果,您需要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 来演示它。在这里查看。

二重奏轨迹效果演示

于 2016-03-17T04:40:00.233 回答