2016-02-15 346 views
2

SKEmitterNode的文档说particleLifetime属性是:SKEmitterNode particleLifetime究竟是什么?

一个颗粒的平均寿命,单位为秒。

虽然我在xcode 7.2.1中看到了一些可疑的东西。当我试图修改一个爆炸发射器时,我预计在编辑器中增加粒子寿命值会使爆炸的总尺寸变大......粒子寿命更长,因此走得更远。我不想提高他们扩大的速度,我喜欢现在的速度。我只是希望他们走得更远,创造出更大的“爆炸”。但是,实际上我在xcode中看到的是,爆炸的大小保持完全相同,但绘图之间的间隔变长。我看到,如果我将粒子寿命调整到0.5,xcode会反复引发爆炸。如果我将间隔调整到20,xcode将绘制完全相同大小的爆炸图,每20秒一次。那根本不是我所期待的。

我经由xcode中创建了一个发射器与:

  • 质地:spark.png
  • 粒子出生率:5500
  • 最大颗粒:2266
  • 角度开始:0
  • 角度范围: 360
  • 速度:70
  • 加速:0
  • 从白色
  • 颜色渐变黄色

而且尝试了以下实验:

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

    SKEmitterNode *node = [SKEmitterNode nodeWithFileNamed:@"ExplosionNuke"]; 
    SKEmitterNode *node2 = [SKEmitterNode nodeWithFileNamed:@"ExplosionNuke"]; 
    SKEmitterNode *node3 = [SKEmitterNode nodeWithFileNamed:@"ExplosionNuke"]; 
    SKEmitterNode *node4 = [SKEmitterNode nodeWithFileNamed:@"ExplosionNuke"]; 

    for (UITouch *touch in touches) 
    { 
     CGPoint touchPoint = [touch locationInNode:layerWorld]; 
     CGPoint left = CGPointMake(touchPoint.x - 100, touchPoint.y); 
     CGPoint right = CGPointMake(touchPoint.x + 100, touchPoint.y); 
     CGPoint top = CGPointMake(touchPoint.x, touchPoint.y + 100); 
     CGPoint bottom = CGPointMake(touchPoint.x, touchPoint.y - 100); 

     node.particleLifetime = .10; 
     node2.particleLifetime = .99; 
     node3.particleLifetime = 1.5; 
     node4.particleLifetime = 300; 

     node.position = left; 
     node2.position = right; 
     node3.position = top; 
     node4.position = bottom; 

     [layerWorld addChild:node4]; 
     [layerWorld addChild:node3]; 
     [layerWorld addChild:node2]; 
     [layerWorld addChild:node]; 

    } 

有四个节点爆破在屏幕上在同一时间,结果是:

终生< = 0.99:整个爆炸的形状确实发生了变化。较小的值传播较短的距离,并导致较小的爆炸从视图中消失得更快。

寿命> = 1.0:爆炸的大小有上限;从1到2,250之间的任何值都会创建完全相同的爆炸大小,并保持完全相同的时间。寿命为2000的粒子不会比寿命为1.0的粒子保持可见。而且,对于任何> 1.00的寿命,粒子都不能完全完成颜色渐变。该发射器从白色变为黄色。所有持续时间< 1.0完成斜坡变黄。所有值> 1.0明显“更白”(即使它们同时从屏幕上消失)

我现在对particleLifetime应该做什么感到十分困惑。只有从0.0到1.0的值才会发生明显的变化。事实上,颜色渐变没有完成持续时间> 1.0,这让我认为这些粒子知道它们应该持续更长时间,并且有更多时间来改变颜色。但是,它们在完成之前从视图中消失。

我在做什么错在这里?为什么node4中的粒子不会明显移动 - 并最终脱离屏幕5分钟?为什么它们在与node3完全相同的时间从视图中消失?

回答

2

如果您的发射器的particleSpeedScale属性为负值,您的粒子将会减小,直到它们在particleLifetime秒过去之前不再可见为止。

particleSpeedScale属性影响

的速率每秒一个粒子的比例因子的变化。

其中正值随时间增加粒子尺寸并且负值减小粒子尺寸。

例如,如果初始粒子大小为1和

particleSpeedScale = 0.5 

粒子的大小将是1.5 1秒后,2.25后2秒等

如果初始粒径为1和之后1秒,0.25后2秒等

particleSpeedScale = -0.5 

粒子的大小将是0.5

我建议你从设置particleSpeedScale = 0开始。这将导致粒子的大小在整个生命周期中保持不变。根据需要调整属性。