Эффект частицы пути узла с SpriteKit

Я работаю со Swift, Sprite Kit и Xcode 6,

Я хотел бы создать эффект частиц в SpriteKit, немного похожий на эффекты частиц шаров в iOS-игре под названием «Дуэт», но я не знаю, как это сделать, мне удалось создать эффект частиц, но не частица, как в этой игре, которая следует за узлом и рисует путь узла...

Вот мой код:

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

person Drakalex    schedule 13.12.2014    source источник
comment
Установите свойство targetNode узла-эмиттера на узел, за которым вы хотите, чтобы он следовал   -  person    schedule 13.12.2014
comment
Я уже сделал это, частица следует за моим узлом, но нет никакого эффекта пути, как след   -  person Drakalex    schedule 13.12.2014
comment
Можете ли вы опубликовать свой код?   -  person    schedule 13.12.2014
comment
Я разместил основную часть, а не всю, потому что она слишком длинная.   -  person Drakalex    schedule 13.12.2014
comment
в чем именно проблема   -  person    schedule 13.12.2014
comment
Частицы появляются на узле, но когда я перемещаю узел, частиц пыли нет, я не знаю, как это назвать, но я хочу, чтобы частицы отслеживали путь узла.   -  person Drakalex    schedule 13.12.2014
comment
В didFinishUpdate вашей сцены установите положение излучателя в положение круга. Удалите тот, который устанавливает targetNode   -  person    schedule 13.12.2014
comment
Я сомневаюсь, что вы можете создать такой эффект с помощью частиц.   -  person 0x141E    schedule 13.12.2014
comment
Окапи, я проверил то, что ты сказал, но это не дало того результата, которого я хотел, и @0x141E, если это невозможно с эффектами частиц, как мне удалось создать эффект, подобный частицам двух шаров в игра Дуэт?   -  person Drakalex    schedule 14.12.2014
comment
У меня такой же вопрос. Как мы можем создать такой эффект в игре Duet?   -  person Noah Covey    schedule 16.03.2016


Ответы (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)
}

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

Демонстрация эффекта следа Duet

person Dion Larson    schedule 17.03.2016
comment
Спасибо за ответ. Знаете ли вы, какая конфигурация редактора частиц придала бы частицам (FirstParticle.sks) вид, похожий на след в дуэте? Спасибо еще раз. - person Noah Covey; 17.03.2016
comment
Смотрите редактирование. Я загрузил полную демонстрацию эффекта Swift Playground. Вы можете начать с файлов частиц sks и изменить их по мере необходимости. - person Dion Larson; 17.03.2016
comment
Пожалуйста! Дайте мне знать, если у вас есть какие-либо проблемы с детской площадкой. - person Dion Larson; 22.03.2016
comment
@NoahCovey, можете ли вы принять этот ответ за награду? - person Dion Larson; 23.03.2016
comment
Просто сделал! Спасибо еще раз - person Noah Covey; 23.03.2016