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