我如何制作五彩纸屑?

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】:

仅适用于其他可能想要回答此问题的人。有一个框架叫做SAConfettiViewhttps://github.com/sudeepag/SAConfettiView。一定要看看!它对我有用。

【讨论】:

这个看起来不错,但在 iPad mini 4 上我的帧速率下降了 20fps

以上是关于我如何制作五彩纸屑?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 五彩纸屑动画

HTML5 画布下落的五彩纸屑/雪多个对象

Swift - 添加UIView后无法点击按钮

如何编写木马

TableViewController 没有成员“视图”

流程图的魅力在markdown中使用mermaid格式制作流程图