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