Sprite kit 如何在父节点中包含SKEmitterNode粒子?
我想将SKEmitterNode添加到SKNode,但其粒子保留在父节点的帧内。有点像UIView上的clipsToBounds属性 示例:发射器中的粒子不应离开黑色方形SKSpriteNode:Sprite kit 如何在父节点中包含SKEmitterNode粒子?,sprite-kit,skemitternode,Sprite Kit,Skemitternode,我想将SKEmitterNode添加到SKNode,但其粒子保留在父节点的帧内。有点像UIView上的clipsToBounds属性 示例:发射器中的粒子不应离开黑色方形SKSpriteNode: 您可以使用SKCropNode来完成。像这样: if let particles = SKEmitterNode(fileNamed: "rain.sks") { let cropNode = SKCropNode() cropNode.positio
您可以使用SKCropNode来完成。像这样:
if let particles = SKEmitterNode(fileNamed: "rain.sks") {
let cropNode = SKCropNode()
cropNode.position = CGPoint(x: CGRectGetMidX(frame), y: CGRectGetMidY(frame))
cropNode.zPosition = 3
cropNode.maskNode = SKSpriteNode(color: SKColor.blackColor(), size: CGSize(width: 150, height: 150))
cropNode.addChild(particles)
addChild(cropNode)
}
不幸的是,这只适用于iOS8。。。当您尝试在iOS9中将发射器添加到裁剪节点时,可能会遇到一些问题,例如,不会渲染任何内容,并且可能会发生fps下降。这是众所周知的
就像在那个链接中说的那样,没有渲染粒子,实际上什么都没有发生。就我个人而言,我没有遇到fps问题,但粒子肯定不会被渲染
解决方法是添加一个将容纳发射器的节点,然后屏蔽该容器节点。那么,让我们添加一个SKSpriteNode,使黑色背景与您的示例中的一样。我们称之为背景:
if let particles = SKEmitterNode(fileNamed: "rain.sks") {
let cropNode = SKCropNode()
cropNode.position = CGPoint(x: CGRectGetMidX(frame), y: CGRectGetMidY(frame))
cropNode.zPosition = 3
let blackNode = SKSpriteNode(color: .blackColor(), size: CGSize(width: 200, height: 200))
blackNode.addChild(particles)
cropNode.maskNode = SKSpriteNode(color: SKColor.blackColor(), size: CGSize(width: 200, height: 200))
cropNode.addChild(blackNode)
addChild(cropNode)
}
非常好,我也尝试过使用SKCroptNode,但我想我添加了一个我认为正确的位置到黑色方形节点,使发射器不可见。谢谢,伙计,这正是我需要的