粒子模拟(七-粒子组2)

上一节我们实现了火箭/烟雾/重力/摩擦等效果,这节我们实现火箭“死亡”之后爆炸为烟花!

1,GroupGoal允许我们改变一组粒子变化到另一组粒子(当进入 GroupGoal 区域后)

            // 使用groupGoal属性,
            // 我们设置目标组改变为我们之前定义的
            // 'explosion' 粒子组
            GroupGoal {
                id: rocketChanger
                // 进入此区域就发生转变
                anchors.top: parent.top
                width: parent.width
                height: 120
                system: particleSystem
                groups: ['rocket']
                // rocket 粒子组改变为 explosion
                goalState: 'explosion'
                // 改变立即发生
                jump: true
                Tracer {
                    color: 'blue'
                    visible: false
                }
            }

2,设计改变后的粒子组

           // ----
            // 粒子画笔,用来渲染 sparkle
            // 发出的粒子
            ImageParticle {
                id: sparklePainter
                system: particleSystem
                groups: ['sparkle']
                color: 'red'
                colorVariation: 0.6
                source: "qrc:/new/preImg/star.png"
                alpha: 0.3
            }

            // 让火箭变成美丽的烟花,
            // 我们需要添加一个粒子组来封装这个变化
            ParticleGroup {
                name: 'explosion'
                system: particleSystem

                // 由于火箭粒子变为我们的爆炸粒子,
                // 当火箭粒子进入GroupGoal控制器区域时,
                // 我们需要在粒子组中添加一个烟花
                TrailEmitter {
                    id: explosionEmitter
                    anchors.fill: parent
                    group: 'sparkle'
                    follow: 'rocket'
                    lifeSpan: 750
                    // 每秒发射 200 个粒子
                    emitRatePerParticle: 200
                    size: 32
                    velocity: AngleDirection {
                        // 粒子方向向上
                        // == 270
                        angle: -90
                        // 方向允许变化的范围
                        angleVariation: 180
                        // 速度
                        magnitude: 50
                    }
                }

                TrailEmitter {
                    id: explosion2Emitter
                    anchors.fill: parent
                    group: 'sparkle'
                    follow: 'rocket'
                    lifeSpan: 250
                    emitRatePerParticle: 100
                    size: 32
                    velocity: AngleDirection {
                        // 方向向下
                        angle: 90
                        // 限制了粒子束的形状
                        angleVariation: 15
                        // 速度
                        magnitude: 400
                    }
                }
            }

我们使用了 particleGroup,其余的发射器和渲染器都是学过的!

运行>>

it's beautiful!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sssnial-jz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值