2015-03-31 8 views
1

Я ищу тот же эффект, что и у нас в SpriteKit для частиц эмиттера, эффект scale, который может сделать изображение частицы больше или меньше в зависимости от времени. (простой красный круг, например, становится больше и исчезает через 1 секунду.) Я не могу найти тот же вариант scale, как мы можем найти в SpriteKit. Изображение может быть больше и оставаться больше, но оно не изменится в зависимости от времени.Как сделать изображение частицы более крупным с эффектом масштаба с помощью SceneKit?

Кто-нибудь знает хороший способ сделать это?

Благодаря

EDIT:

Ни одна из этих попыток не работали, вы знаете, почему?

func addParticleSceneKit(){ 
     println("add") 
     var fire = SCNParticleSystem(named: "circle1.scnp", inDirectory: "art.scnassets/Particles") 
     fire.particleSize = 5 
     emitter.addParticleSystem(fire) //emitter is a SCNNode 

     /* 
     let bigger = SCNAction.runBlock { (node) -> Void in 
      dispatch_async(dispatch_get_main_queue(), {() -> Void in 
       SCNTransaction.setAnimationDuration(1) 
       fire.propertyControllers = [SCNParticlePropertySize : 10.0] 
      }) 
     } 
     emitter.runAction(bigger) 
     */ 

     //SCNTransaction.begin() 
     //SCNTransaction.setAnimationDuration(1) 
     //fire.propertyControllers = [SCNParticlePropertySize : 10.0] 
     //SCNTransaction.commit() 
    } 

ответ

2

Wow. Просто вау. Вы бросили много кода на стене, чтобы посмотреть, какие палки, но посмотрели ли вы в документации?

Описание метода для SCNParticlePropertyController's initializer содержит пример кода, который выполняет практически то, о чем вы просите, - он анимирует размеры частиц. Воспроизводится здесь:

// 1. Create and configure an animation object. 
let animation = CAKeyframeAnimation() 
animation.values = [ 0.1, 1.0, 3.0, 0.5 ] 

// 2. Create a property controller from the animation object. 
let sizeController = SCNParticlePropertyController(animation: animation) 

// 3. Assign the controller to a particle system, associating it with a particle property. 
particleSystem.propertyControllers = [ SCNParticlePropertySize: sizeController ] 

Если вам нужно только от размера и размера вместо ключевых кадров, вы можете использовать CABasicAnimation в шаге 1.

+0

Было ли это так удивительно? :) Как вау? :) Нет, я не смотрел класс propertyController, моя ошибка, я напрямую использовал словарь. Спасибо за ответ. – Paul

+1

'SCNParticleSystem.ParticleProperty.size', в iOS 10, для' SCNParticlePropertySize' – Juguang

3

SCNParticleSystem имеет такие свойства, как

// Specifies the initial size of the particle. Animatable. 
@property(nonatomic) CGFloat particleSize; 

// Specifies the initial size variation of the particle. Animatable. 
@property(nonatomic) CGFloat particleSizeVariation; 

, если вам нужно больше контроля вы также можете предоставить свой собственный контроллер свойства частиц для ключа «SCNParticlePropertySize». Например, чтобы указать, как размер должен быть анимирован по продолжительности жизни частиц.

см

// Property controllers. 
// The keys for this directionary are listed in the "Particle Properties Name" section. 
// The values are instances of SCNParticlePropertyController 
@property(nonatomic, copy) NSDictionary *propertyControllers; 
+0

Привет, спасибо. Я попытался оживить его и установить начальный размер, но изображение остается с тем же начальным значением. Я редактировал свой пост, не могли бы вы посмотреть? – Paul