QML 粒子系统 - Affector(2)
2023-11-14 20:40:46
在前面的文章中,我们简单介绍了 Affector 影响器及其基础类型的属性,并使用基础类型的属性进行了一些示例。本节将对 Affector 影响器的八个子类型进行介绍和示例。
缩放影响器(ScaleAffector)
缩放影响器用于改变粒子的缩放比例。缩放比例可以是均匀的,也可以是各向异性的。均勻缩放是指粒子在所有方向上都按相同比例缩放,而各向异性缩放是指粒子在不同的方向上按不同的比例缩放。
import QtQuick.Particles 2.12
import QtQuick 2.12
ParticleSystem {
// 创建缩放影响器
ScaleAffector {
// 设置缩放比例
scale: 2.0
}
// 创建粒子发射器
Emitter {
// 设置粒子数量
particleCount: 100
}
}
这个例子中,我们将缩放比例设置为 2.0,这意味着粒子将被放大两倍。
旋转影响器(RotationAffector)
旋转影响器用于改变粒子的旋转角度。旋转角度可以是绝对的,也可以是相对的。绝对旋转是指粒子相对于其原始方向的旋转角度,而相对旋转是指粒子相对于其当前方向的旋转角度。
import QtQuick.Particles 2.12
import QtQuick 2.12
ParticleSystem {
// 创建旋转影响器
RotationAffector {
// 设置旋转角度
angle: 90
}
// 创建粒子发射器
Emitter {
// 设置粒子数量
particleCount: 100
}
}
这个例子中,我们将旋转角度设置为 90 度,这意味着粒子将被旋转 90 度。
重力影响器(GravityAffector)
重力影响器用于为粒子施加重力。重力方向可以是垂直向下的,也可以是自定义的。垂直向下是指粒子受到的重力方向与屏幕的垂直方向一致,而自定义方向是指粒子受到的重力方向可以任意设置。
import QtQuick.Particles 2.12
import QtQuick 2.12
ParticleSystem {
// 创建重力影响器
GravityAffector {
// 设置重力方向
gravity: Vector3D(0, -9.81, 0)
}
// 创建粒子发射器
Emitter {
// 设置粒子数量
particleCount: 100
}
}
这个例子中,我们将重力方向设置为垂直向下,这意味着粒子将受到垂直向下的重力。
摩擦影响器(FrictionAffector)
摩擦影响器用于为粒子施加摩擦力。摩擦力可以使粒子减速,也可以使粒子停止运动。摩擦力的大小可以是恒定的,也可以是随时间变化的。恒定摩擦力是指摩擦力的大小始终不变,而随时间变化的摩擦力是指摩擦力的大小会随着时间而改变。
import QtQuick.Particles 2.12
import QtQuick 2.12
ParticleSystem {
// 创建摩擦影响器
FrictionAffector {
// 设置摩擦力的大小
friction: 0.1
}
// 创建粒子发射器
Emitter {
// 设置粒子数量
particleCount: 100
}
}
这个例子中,我们将摩擦力的大小设置为 0.1,这意味着粒子将受到 0.1 的摩擦力。
线性力影响器(LinearForceAffector)
线性力影响器用于为粒子施加线性力。线性力可以是恒定的,也可以是随时间变化的。恒定线性力是指线性力的大小和方向始终不变,而随时间变化的线性力是指线性力的大小和方向会随着时间而改变。
import QtQuick.Particles 2.12
import QtQuick 2.12
ParticleSystem {
// 创建线性力影响器
LinearForceAffector {
// 设置线性力的大小和方向
force: Vector3D(10, 0, 0)
}
// 创建粒子发射器
Emitter {
// 设置粒子数量
particleCount: 100
}
}
这个例子中,我们将线性力的大小和方向设置为 (10, 0, 0),这意味着粒子将受到大小为 10、方向为 x 轴正方向的线性力。
径向力影响器(RadialForceAffector)
径向力影响器用于为粒子施加径向力。径向力是指从一个点到另一个点的力。径向力的大小和方向可以是恒定的,也可以是随时间变化的。恒定径向力是指径向力的大小和方向始终不变,而随时间变化的径向力是指径向力的大小和方向会随着时间而改变。
import QtQuick.Particles 2.12
import QtQuick 2.12
ParticleSystem {
// 创建径向力影响器
RadialForceAffector {
// 设置径向力的大小和方向
force: Vector3D(10, 0, 0)
center: Point { x: 100, y: 100 }
}
// 创建粒子发射器
Emitter {
// 设置粒子数量
particleCount: 100
}
}
这个例子中,我们将径向力的大小和方向设置为 (10, 0, 0),并且将径向力中心设置为 (100, 100),这意味着粒子将受到从点 (100, 100) 到其自身位置的大小为 10、方向为 x 轴正方向的径向力。
吸引影响器(AttractorAffector)
吸引影响器用于为粒子施加吸引力。吸引力是指两个物体之间互相吸引的力。吸引力的大小和方向可以是恒定的,也可以是随时间变化的。恒定吸引力是指吸引力的大小和方向始终不变,而随时间变化的吸引力是指吸引力的大小和方向会随着时间而改变。
import QtQuick.Particles 2.12
import QtQuick 2.12
ParticleSystem {
// 创建吸引影响器
AttractorAffector {
// 设置吸引力的大小和方向
force: Vector3D(10, 0, 0)
center: Point { x: 100, y: 100 }
}
// 创建粒子发射器
Emitter {
// 设置粒子数量
particleCount: 100
}
}
这个例子中,我们将吸引力的大小和方向设置为 (10, 0, 0),并且将吸引力中心设置为 (100, 100),这意味着粒子将受到从点 (100, 100) 到其自身位置的大小为 10、方向为 x 轴正方向的吸引力。
弹簧影响器(SpringAffector)
弹簧影响器用于为粒子施加弹簧力。弹簧力是指两个物体之间互相吸引或排斥的力。弹簧力的大小和方向可以是恒定的,也可以是随时间变化的。恒定弹簧力是指弹簧力的大小和方向始终不变,而随时间变化的弹簧力是指弹簧力的大小和方向会随着时间而改变。
import QtQuick.Particles 2.12
import QtQuick 2.12
ParticleSystem {
// 创建弹簧影响器
SpringAffector {
// 设置弹簧力的大小和方向
force: Vector3D(10, 0, 0)
center: Point { x: 100, y: 100 }
}
// 创建粒子发射器
Emitter {
// 设置粒子数量
particleCount: 100
}
}
这个例子中,我们将弹簧力的大小和方向设置为 (10, 0, 0),并且将弹簧力中心设置为 (100, 100),这意味着粒子将受到从点 (100, 100) 到其自身位置的大小为 10、方向为 x 轴正方向的弹簧力。