Подтвердить что ты не робот

Эффект частиц пути узла с помощью SpriteKit

Я работаю со 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)
    }
}
4b9b3361

Ответ 1

Для достижения эффекта, подобного Duet, вам нужно, чтобы 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)
}

Я смог получить подобный эффект и в итоге создал игровую площадку, чтобы продемонстрировать это. Проверьте это здесь.

Demo of Duet trail effect