前言
粒子系统的老三样:
ParticleSystem粒子系统主体 ImageParticle图形渲染器 Emitter粒子发射器
设计思路
-
fire粒子组。粒子发射后的最初形态,向着下一个形态splode变化。 -
splode粒子组。粒子的爆炸形态,向着下一个形态dead变化。爆炸的粒子会伴随works粒子组。 -
dead粒子组。粒子的消失形态,触发影响器后启动works发射器发射works粒子组。
-
fire发射器。初始形态粒子的发射器 -
works发射器。爆炸散开的粒子的发射器
代码展示
import QtQuick
import QtQuick.Particles
Rectangle {
width: 360
height: 600
color: "black"
ParticleSystem {
parent :
id: syssy
[0]
ParticleGroup {
name: "fire"
duration: 2000
durationVariation: 2000
to: {"splode":1}
}
[0]
[1]
ParticleGroup {
name: "splode"
duration: 400
to: {"dead":1}
TrailEmitter {
group: "works"
emitRatePerParticle: 100
lifeSpan: 1000
maximumEmitted: 1200
size: 8
velocity: AngleDirection {angle: 270; angleVariation: 45; magnitude: 20; magnitudeVariation: 20;}
acceleration: PointDirection {y:100; yVariation: 20}
}
}
[1]
[2]
ParticleGroup {
name: "dead"
duration: 1000
Affector {
once: true
onAffected: (x, y)=> worksEmitter.burst(400,x,y)
}
}
[2]
Timer {
interval: 6000
running: true
triggeredOnStart: true
repeat: true
onTriggered:startingEmitter.pulse(100);
}
Emitter {
id: startingEmitter
group: "fire"
width: parent.width
y: parent.height
enabled: false
emitRate: 80
lifeSpan: 6000
velocity: PointDirection {y:-100;}
size: 32
}
Emitter {
id: worksEmitter
group: "works"
enabled: false
emitRate: 100
lifeSpan: 1600
maximumEmitted: 6400
size: 8
velocity: CumulativeDirection {
PointDirection {y:-100}
AngleDirection {angleVariation: 360; magnitudeVariation: 80;}
}
acceleration: PointDirection {y:100; yVariation: 20}
}
ImageParticle {
groups: ["works", "fire", "splode"]
source: "qrc:///particleresources/glowdot.png"
entryEffect: ImageParticle.Scale
}
}
}
效果展示
作者:何名取
链接:https://juejin.cn/post/7110973849469976607
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。原文始发于微信公众号(汇编语言):QML粒子系统-System(2)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论