我正在学习SpriteKit,特别是如何将SKEmitterNode效果应用于现有的SKSpriteNode。
我在粒子编辑器中玩了一个简单的" rain"粒子。然后我将它连接到我游戏中的现有精灵:
let emitter = SKEmitterNode(fileNamed: "RainParticle.sks")
emitter?.targetNode = dogSprite
// dogSprite is just an SKSpriteNode
dogSprite.addChild(emitter!)
我得到的效果如下:
按照我的预期应用粒子效果,效果就是我想要的。我唯一希望改变的是"区域"粒子效应。
狗精灵大概是60x50。我希望粒子效果得到切断"切断"在狗精灵的底部。换句话说,我不希望粒子在" tile"之外移动。狗精灵。
有没有办法通过改变发射器的属性来做到这一点,还是我必须从另一个角度解决这个问题?非常感谢!
(万一有人碰巧注意到,这件艺术品都不是我的,这不是商业项目。我只是抓住一些我喜欢在网上学习的精灵来学习!我全都是为了遵守许可证。)< / p>
答案 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(...)
希望这有帮助