我如何制作五彩纸屑?
Posted
技术标签:
【中文标题】我如何制作五彩纸屑?【英文标题】:How do I make confetti? 【发布时间】:2015-09-12 17:35:28 【问题描述】:我本质上是想发射五彩纸屑颗粒。每个粒子都是相同的形状,但是,我希望每个粒子都是我指定的颜色选择中的随机颜色。
是否有办法让每个发射的粒子具有随机颜色,或者我是否需要为每种粒子颜色使用单独的发射器?
【问题讨论】:
@sangony 我已经创建了粒子,但我不知道如何让它们成为随机颜色。我在网上找了好久也没找到。 【参考方案1】:您可以使用单个发射器来实现您想要的:
import SpriteKit
class GameScene: SKScene, SKPhysicsContactDelegate
let emitter = SKEmitterNode(fileNamed: "particle")
let colors = [SKColor.whiteColor(),SKColor.grayColor(),SKColor.greenColor(),SKColor.redColor(),SKColor.blackColor()]
override func didMoveToView(view: SKView)
self.physicsBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
emitter.position = CGPoint(x: 200, y:300)
emitter.particleColorSequence = nil
emitter.particleColorBlendFactor = 1.0
self.addChild(emitter)
let action = SKAction.runBlock(
[unowned self] in
let random = Int(arc4random_uniform(UInt32(self.colors.count)))
self.emitter.particleColor = self.colors[random];
println(random)
)
let wait = SKAction.waitForDuration(0.1)
self.runAction(SKAction.repeatActionForever( SKAction.sequence([action,wait])))
编辑:
尝试更改等待操作的持续时间以获得不同的结果。
您也可以使用颜色渐变(在粒子编辑器中)来达到相同的效果:
或者您可以使用particleColorSequence 和SKKeyframeSequence 来在其生命周期内更改粒子颜色。希望这可以帮助。
【讨论】:
但这不会像五彩纸屑那样混合颜色。您只会在一秒钟内获得一些颜色,然后在下一秒钟获得另一种颜色,依此类推。粒子都是相同的颜色,颜色会每秒改变一次。它看起来非常不自然。还是我误解了代码? 是的,你是对的,我忘了更改等待动作的持续时间。请检查编辑。【参考方案2】:仅适用于其他可能想要回答此问题的人。有一个框架叫做SAConfettiView
https://github.com/sudeepag/SAConfettiView。一定要看看!它对我有用。
【讨论】:
这个看起来不错,但在 iPad mini 4 上我的帧速率下降了 20fps以上是关于我如何制作五彩纸屑?的主要内容,如果未能解决你的问题,请参考以下文章