gpt4 book ai didi

ios - SKEmitterNode particleLifetime 究竟是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:58:12 25 4
gpt4 key购买 nike

SKEmitterNode 的文档说 particleLifetime 属性是:

The average lifetime of a particle, in seconds.

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

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

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

  • Material :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];

}

同时在屏幕上爆出四个节点,结果为:

for lifetime <= 0.99:整个爆炸的形状确实发生了变化。值越小,传播的距离越短,爆炸越小,从视野中消失得越快。

for lifetime >= 1.0:爆炸的大小是有上限的; 1 到 2,250 之间的任何值都会产生完全相同大小的爆炸,并在完全相同的时间内保持可见。生命周期为 2,000 的粒子不会比生命周期为 1.0 的粒子保持可见的时间更长。此外,对于任何 > 1.00 的生命周期,粒子都不会完全完成色带。该发射器从白色渐变为黄色。所有持续时间 < 1.0 的斜坡都将变为黄色。所有 > 1.0 的值都明显“更白”(即使它们同时从屏幕上消失)

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

我在这里做错了什么?为什么 node4 中的粒子在 5 分钟内没有继续在屏幕上明显移动并最终离开屏幕?为什么它们与 node3 同时从 View 中消失?

最佳答案

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

particleSpeedScale 属性影响

the rate at which a particle’s scale factor changes per second.

随着时间的推移,正值会增加粒子的大小,负值会减小粒子的大小。

例如初始粒子大小为1,

particleSpeedScale = 0.5

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

如果初始粒子大小为1且

particleSpeedScale = -0.5

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

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

关于ios - SKEmitterNode particleLifetime 究竟是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35400479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com