控制SKEmitterNode" area"尺寸?

时间:2016-09-11 06:06:34

标签: sprite-kit skspritenode skemitternode

我正在学习SpriteKit,特别是如何将SKEmitterNode效果应用于现有的SKSpriteNode。

我在粒子编辑器中玩了一个简单的" rain"粒子。然后我将它连接到我游戏中的现有精灵:

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

我得到的效果如下:

enter image description here

按照我的预期应用粒子效果,效果就是我想要的。我唯一希望改变的是"区域"粒子效应。

狗精灵大概是60x50。我希望粒子效果得到切断"切断"在狗精灵的底部。换句话说,我不希望粒子在" tile"之外移动。狗精灵。

有没有办法通过改变发射器的属性来做到这一点,还是我必须从另一个角度解决这个问题?非常感谢!

(万一有人碰巧注意到,这件艺术品都不是我的,这不是商业项目。我只是抓住一些我喜欢在网上学习的精灵来学习!我全都是为了遵守许可证。)< / p>

2 个答案:

答案 0 :(得分: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)

您可以在Apple docs找到有关SKCropNode的更多详细信息。

答案 1 :(得分:0)

我想你必须在xCode粒子编辑器中使用一些设置。

最有可能与此相关的值是

1)终身

2)PositionRange(y)

您也可以根据需要更改粒子效果的比例。我在代码中执行此操作

emitter.setScale(...)

希望这有帮助