2016-08-15 2 views
0

Я создал шаблонный файл частиц в своем проекте и хочу использовать его с различными изображениями текстур.SKEmitterNode с разными временами моделирования

Я создал это и использовать этот метод ...

func addEmitterWithTexture(image: UIImage, size: CGSize, advanceTime: NSTimeInterval, scene: SKScene) { 
    let emitter = SKEmitterNode(fileNamed: "MyParticle")! 
    scene.addChild(emitter) 
    emitter.particleTexture = SKTexture(image: image) 
    emitter.position = CGPoint(x: size.width * 0.5, y: size.height * 0.5) 
    emitter.particlePositionRange = CGVector(dx: size.width, dy: size.height) 
    emitter.advanceSimulationTime(advanceTime) 
    emitter.zPosition = 3.0 
} 

Я хотел бы изображения, чтобы совать в разное время, поэтому я использую advanceSimulationTime. Но это не похоже на эффект. Все изображения используют одно и то же время моделирования.

Я предполагаю, что это связано с тем, что время моделирования на родительском?

Редактировать Хм ... это, похоже, не так.

Интересно, все ли эмиттеры находятся на глобальном таймере моделирования? В таком случае, есть ли способ запустить излучатели в разное время?

Это тот случай, или я делаю что-то неправильно?

В конце концов я обошел его, используя waitAction на сцене и добавляя излучатели в действие runBlock после ожидания.

+0

все излучатели работают в свое время, когда они запущены – Knight0fDragon

+0

@ Knight0fDragon это то, что я предположил, но это не обновление их индивидуально. Я должен был добавить их в разное время, чтобы получить эффект, который я хотел. Увеличение времени моделирования приводит к тому, что все они будут направлены на одну и ту же сумму. Это сцена внутри SKView в приложении, отличном от SpriteKit, так что, возможно, это повлияло на что-то? – Fogmeister

+0

Я пишу вам ответ – Knight0fDragon

ответ

0

Единственная вещь, которая делает это заранее, заключается в быстрой перемотке действия излучателя вперед во времени, не используйте это, когда вы хотите, чтобы излучатели стреляли в разное время, прежде чем добавлять излучатель к вашей сцене, остановите его, установив paused на true, particleSpeed до 0 и по вызову resetSimulation() Это гарантирует нам, что когда добавляется эмиттер частиц, он не будет работать. Затем используйте SKAction, чтобы определить, когда вам нужно отключить излучатель и установить его скорость обратно на свою скорость по умолчанию.

Смежные вопросы