2016-09-11 108 views
1

我正在學習SpriteKit,特別是如何將SKEmitterNode效果應用於現有的SKSpriteNode。控制SKEmitterNode「區域」大小?

我在粒子編輯器中玩過,做了一個簡單的「雨」粒子。然後我連接,爲現有的精靈在我的遊戲,像這樣:

let emitter = SKEmitterNode(fileNamed: "RainParticle.sks") 
emitter?.targetNode = dogSprite 
// dogSprite is just an SKSpriteNode 
dogSprite.addChild(emitter!) 

我得到的是,看起來像這樣的效果:

enter image description here

如我期望的粒子效果應用效果就是我要做的。我唯一希望改變的是粒子效應的「面積」。

狗的精靈大概是60x50。我希望粒子效應在狗精靈的底部「切斷」。換句話說,我不希望這些粒子在狗精靈的「瓦片」之外傳播。

有沒有辦法通過改變發射器的屬性來做到這一點,或者我必須從另一個角度來解決這個問題嗎?非常感謝! (只是爲了防止任何人注意到,這些作品都不是我的,這不是一個商業項目,我只是抓住了一些我喜歡的精靈來學習!我都是爲了遵守許可證)。

回答

0

我想你將不得不在xCode粒子編輯器中使用一些設置。

最有可能是相關的這個值是

1)終身

2)PositionRange(Y)

您還可以,如果這就是改變的粒子效果的尺度是什麼你需要。我這樣做的代碼

emitter.setScale(...) 

希望這有助於

1

你根本就創建一個SKCropNode像這樣的例子:

// initialize the SKCropNode 
let cropNodeDog = SKCropNode.init() 

// create the dog sprite and give a position 
let dogSprite = SKSpriteNode(imageNamed: "dogSprite.png") 
dogSprite.position = CGPoint(x: CGRectGetMidX(self.frame),y:CGRectGetMidY(self.frame)) 

// create the SKEmitterNode and give a high zPosition 
emitter = SKEmitterNode(fileNamed: "RainParticle.sks") 
emitter.zPosition = 2 

// Define the SKCropNode mask and add elements to it 
cropNodeDog.maskNode = dogSprite 
cropNodeDog.addChild(dogSprite) 
cropNodeDog.addChild(emitter) 

//Finally add the SKCropNode to the scene 
addChild(cropNodeDog) 

您可以找到有關SKCropNodeApple docs更多細節。

+0

謝謝指出SKCropNode - 它看起來像我想要的行爲。但是,我試圖將其與您的示例類似,並且不顯示發射器。 – bitops

+1

嘗試更正發射器和dogsprite的z位置 –

+0

看起來這可能實際上是iOS中的錯誤! http://www.openradar.me/22821166 – bitops