如何使用 SceneKit 使用缩放效果使粒子图像变大?

How to make a particle image bigger with a scale effect with SceneKit?

我正在寻找与我们在 SpriteKit 中对发射器粒子的相同效果,scale 效果可以根据时间使粒子图像变大或变小。 (例如,一个简单的红色圆圈,变大并在 1 秒后消失。)我找不到与 SpriteKit 中相同的 scale 选项。图像可以变大,也可以保持变大,但不会随时间变化。

有人知道这样做的好方法吗?

谢谢

编辑:

None 这些尝试成功了,你知道为什么吗?

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

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;

哇。哇哦。您在墙上扔了很多代码只是为了看看有什么用,但是您看过文档了吗?

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 ]

如果您只需要起始尺寸和起始尺寸而不是关键帧,则可以在步骤 1 中使用 CABasicAnimation