2016-09-11 7 views
1

私はSpriteKitの学習中です。特に、既存のSKSpriteNodeにSKEmitterNodeエフェクトを適用する方法について説明しています。SKEmitterNode "area"サイズを制御していますか?

私はパーティクルエディタで遊んで、シンプルな "雨"パーティクルを作りました。私が期待するようパーティクルエフェクトが適用され

enter image description here

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

私は何を取得すると、このように見える効果である:私はそのようにのように私のゲーム内の既存のスプライトにすることを接続しますエフェクトは私が進めていることです。私が変更したいのは、パーティクルエフェクトの「領域」だけです。

犬スプライトは大体60x50です。パーティーエフェクトを犬のスプライトの一番下に「切り取る」ようにしたいと思います。言い換えれば、私は粒子が犬のスプライトの「タイル」の外側を移動することを望んでいません。

エミッタのプロパティを変更することでこれを行う方法はありますか、またはこの問題を別の角度から来なければなりませんか?本当にありがとう!

(この作品のどれも私のものではありません。商用プロジェクトではありません。私はウェブから好きなスプライトを手に取っただけで、ライセンスを遵守しています。

答えて

0

xCodeパーティクルエディタでいくつかの設定をして遊んでみてください。

最も可能性が高い。このために関連性がされている値が

1である)寿命

2)PositionRange(Y)

ものthats場合も、パーティクル効果の規模を変更することができあなたが必要です。私は、これは

1

あなたは、単にこの例のようSKCropNodeを作成することができますことができますコードで

emitter.setScale(...) 

希望を次の操作を行います。

// 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) 

あなたはApple docsからSKCropNodeについての詳細を見つけることができます。

+0

SKCropNodeを指摘してくれてありがとう - それは私が望む動作のように見えます。しかし、私はあなたの例に似てそれを接続しようとエミッタは表示されません。 – bitops

+1

エミッタとドッグスプライトのzPositionsを修正してみてください –

+0

これは実際にiOSのバグかもしれません! http://www.openradar.me/22821166 – bitops

関連する問題