2

的文档SKEmitterNode说该particleLifetime属性是:

粒子的平均寿命,以秒为单位。

不过,我在 xcode 7.2.1 中看到了一些可疑的东西。当我尝试修改爆炸发射器时,我预计在编辑器中增加粒子生命周期值会使爆炸的总大小更大……粒子寿命更长,因此传播得更远。我不想增加它们扩展的速度,我喜欢目前的速度。我只是想让他们走得更远,创造更大的“爆炸”。

然而,相反,我在 xcode 中实际看到的是爆炸保持完全相同的大小,但绘制之间的间隔变长了。我看到如果我将粒子生命周期调整为 0.5,xcode 会反复绘制爆炸。如果我将间隔调整到 20,xcode 会绘制完全相同大小的爆炸,每约 20 秒一次。这根本不是我所期待的。

我通过 xcode 创建了一个发射器:

  • 质地:火花.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 的任何值都会产生完全相同大小的爆炸,并且在完全相同的时间内保持可见。生命周期为 2,000 的粒子不会比生命周期为 1.0 的粒子保持可见的时间更长。此外,对于任何 > 1.00 的生命周期,粒子都不会完全完成色带。该发射器从白色渐变到黄色。所有持续时间 < 1.0 的时间都完成了黄色的渐变。所有大于 1.0 的值都明显“更白”(即使它们同时从屏幕上消失)

我现在对应该做什么感到非常困惑particleLifetime。只有从 0.0 到 1.0 的值有明显的变化。颜色渐变在持续时间 > 1.0 时没有完成的事实让我认为粒子知道它们应该持续更长时间并且有更多时间改变颜色。但是,它们在完成之前就从视野中消失了。

我在这里做错了什么?为什么节点 4 中的粒子在五分钟内没有明显地在屏幕上移动并最终离开屏幕?为什么它们在与 node3 完全相同的时间从视图中消失?

4

1 回答 1

3

如果您的发射器的属性为负数,您的粒子将减小尺寸,直到几秒钟particleSpeedScale后它们不再可见。particleLifetime

物业particleSpeedScale影响

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

其中正值会随着时间的推移增加颗粒的大小,而负值会减小颗粒的大小。

例如,如果初始粒度为 1 并且

particleSpeedScale = 0.5

1 秒后粒子的大小为 1.5,2 秒后为 2.25,依此类推。

如果初始粒径为 1 并且

particleSpeedScale = -0.5

1 秒后粒子的大小为 0.5,2 秒后为 0.25,依此类推。

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

于 2016-02-15T09:58:43.037 回答