SKEmitterNode的文档显示,particleLifetime属性是:
粒子的平均寿命,以秒为单位。
不过,我在xcode 7.2.1中看到了一些可疑的东西。当我试图修改一个爆炸发射器时,我希望在编辑器中增加粒子寿命值会使爆炸的总尺寸更大……粒子会活得更长,因此会走得更远。我不想提高他们扩张的速度,我喜欢现在的速度。我只想让他们走得更远,创造一个更大的“爆炸”。
然而,相反,我在xcode中实际看到的是,爆炸的大小完全相同,但绘制之间的间隔越来越长。我看到,如果我调整粒子的寿命降到,比如说0.5,xcode重复地画出爆炸。如果我把间隔调整到,比方说,20,xcode画出完全相同大小的爆炸,每~20秒一次。这完全不是我所期望的。
我通过以下xcode创建了一个发射器:
并尝试了以下实验:
-(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?完全相同的时间从视野中消失?
发布于 2016-02-15 09:58:43
如果发射器的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开始。这将导致粒子的大小在整个生命周期内保持不变。根据需要调整属性。
https://stackoverflow.com/questions/35400479
复制相似问题