为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完全相同的时间从视图中消失?