首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SKEmitterNode particleLifetime到底是什么?

SKEmitterNode particleLifetime到底是什么?
EN

Stack Overflow用户
提问于 2016-02-15 02:08:43
回答 1查看 243关注 0票数 2

SKEmitterNode的文档显示,particleLifetime属性是:

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

不过,我在xcode 7.2.1中看到了一些可疑的东西。当我试图修改一个爆炸发射器时,我希望在编辑器中增加粒子寿命值会使爆炸的总尺寸更大……粒子会活得更长,因此会走得更远。我不想提高他们扩张的速度,我喜欢现在的速度。我只想让他们走得更远,创造一个更大的“爆炸”。

然而,相反,我在xcode中实际看到的是,爆炸的大小完全相同,但绘制之间的间隔越来越长。我看到,如果我调整粒子的寿命降到,比如说0.5,xcode重复地画出爆炸。如果我把间隔调整到,比方说,20,xcode画出完全相同大小的爆炸,每~20秒一次。这完全不是我所期望的。

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

  • 纹理: spark.png
  • 粒子出生率: 5500
  • 最大粒子: 2266
  • 角度起跑:0
  • 角度范围: 360
  • 速度: 70
  • 加速:0
  • 彩色坡道从白色到黄色

并尝试了以下实验:

代码语言:javascript
复制
-(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:整个爆炸的形状确实发生了变化。价值越小,距离越短,爆炸越小,消失得越快。

for >= 1.0:爆炸的大小是有上限的;从1到2,250之间的任何值都会产生完全相同的爆炸大小,在相同的时间内仍然是可见的。寿命为2,000的粒子不能比寿命为1.0的粒子更长时间保持可见。此外,在任何生命期> 1.00,粒子并不完全完成彩色坡道。这个发射器从白色向黄色倾斜。所有持续时间< 1.0完成坡道到黄色。所有大于1.0的值都明显“白色”(即使它们同时从屏幕上淡出)。

我现在完全搞不懂particleLifetime应该做什么。只有0.0到1.0之间的值进行了可见的更改。事实上,颜色坡道在持续时间大于1.0时还没有完成,这让我认为粒子知道它们应该持续更长时间,并且有更多的时间来改变颜色。但是,它们在完成之前就从视野中消失了。

,我在这里做错了什么?为什么node4中的粒子不能在屏幕上持续移动5分钟?为什么它们在与node3?完全相同的时间从视野中消失?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-15 09:58:43

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

particleSpeedScale属性影响

粒子的刻度因子每秒变化的速率。

当一个正值随着时间的推移而增大粒子的尺寸,而一个负值会减小粒子的大小。

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

代码语言:javascript
复制
particleSpeedScale = 0.5

粒子的大小在1秒后为1.5,2秒后为2.25,等等。

如果初始粒子尺寸为1

代码语言:javascript
复制
particleSpeedScale = -0.5

粒子的大小在1秒后为0.5,2秒后为0.25,等等。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35400479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档