2016-02-15 338 views
2

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完全相同的時間從視圖中消失?

回答

2

如果您的發射器的particleSpeedScale屬性爲負值,您的粒子將會減小,直到它們在particleLifetime秒過去之前不再可見爲止。

particleSpeedScale屬性影響

的速率每秒一個粒子的比例因子的變化。

其中正值隨時間增加粒子尺寸並且負值減小粒子尺寸。

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

particleSpeedScale = 0.5 

粒子的大小將是1.5 1秒後,2.25後2秒等

如果初始粒徑爲1和之後1秒,0.25後2秒等

particleSpeedScale = -0.5 

粒子的大小將是0.5

我建議你從設置particleSpeedScale = 0開始。這將導致粒子的大小在整個生命週期中保持不變。根據需要調整屬性。