我正在学习SpriteKit,特别是如何将SKEmitterNode效果应用于现有的SKSpriteNode。
我在粒子编辑器中做了一个简单的“雨”粒子。然后我将它连接到我游戏中的现有精灵,如下所示:
let emitter = SKEmitterNode(fileNamed: "RainParticle.sks")
emitter?.targetNode = dogSprite
// dogSprite is just an SKSpriteNode
dogSprite.addChild(emitter!)我得到的效果看起来像这样:

粒子效果的应用正如我所期望的,效果就是我想要的。我唯一想要改变的是粒子效果的“面积”。
狗的雪碧图大概是60x50。我希望粒子效果在狗精灵的底部被“切断”。换句话说,我不希望粒子在狗精灵的“磁贴”之外移动。
有没有办法通过改变发射器的属性来做到这一点,或者我必须从不同的角度来解决这个问题?非常感谢!
(为了防止有人注意到,这些艺术品都不是我的,这也不是一个商业项目。我只是从网上抓取了一些我喜欢的精灵来学习!我完全赞成遵守许可证。)
发布于 2016-09-11 20:28:20
您可以简单地创建一个类似以下示例的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的更多详细信息。
发布于 2016-09-11 18:40:45
我猜您必须在xCode粒子编辑器中使用一些设置。
最有可能与此相关的值是
1)生命周期
2) PositionRange (y)
如果需要的话,你也可以改变粒子效果的比例。我用代码来做这件事
emitter.setScale(...)希望这能有所帮助
https://stackoverflow.com/questions/39433332
复制相似问题