目录一、粒子的行为模式二、开发环境与版本说明三、原理分析三种行为影响器3.1 三种影响器对比3.2 Wander随机游走3.3 Turbulence湍流3.4 Age年龄控制四、代码实现4.1 Affector_Wander.qml随机游走4.2 Affector_Turbulence.qml湍流4.3 Affector_Age.qml年龄控制五、运行效果六、适用边界与限制条件七、总结一、粒子的行为模式上一篇讲了三种物理影响器——重力、摩擦、吸引它们模拟经典力学的力场效果。但粒子的行为不仅限于物理力雪花需要左右飘动随机游走火焰需要剧烈扰动湍流某些粒子需要提前消亡年龄控制。本文讲解三种行为影响器Wander随机游走、Turbulence湍流、Age年龄控制。它们控制的是粒子怎么动、什么时候死。二、开发环境与版本说明本文所有代码基于以下环境验证验证日期2026-06-17Qt 版本6.8.2编译器MinGW 64-bit操作系统Windows 11构建工具CMake 3.29三、原理分析三种行为影响器3.1 三种影响器对比影响器作用核心属性典型场景Wander随机游走xVariance、yVariance、pace布朗运动、雪花飘动Turbulence湍流扰动strength扰动强度、noiseSource噪声图火焰、烟雾、水流Age年龄控制lifeLeft剩余生命、advancePosition加速消亡、冻结效果3.2 Wander随机游走Wander 对粒子施加随机的位置偏移模拟布朗运动。三个核心属性xVariancex 方向的最大随机偏移量yVariancey 方向的最大随机偏移量pace每秒最大属性变化量控制游走速度Wander 的数学模型是每帧在[-xVariance, xVariance]和[-yVariance, yVariance]范围内随机选择目标位置然后以pace像素/秒的速度向目标移动。xVariance/yVariance控制游走范围pace控制游走频率。3.3 Turbulence湍流Turbulence 使用噪声图如 Perlin 噪声生成流体力对粒子施加复杂的扰动。两个核心属性strength扰动强度力的大小与 strength 成正比noiseSource噪声图 URL不提供时使用默认噪声图Turbulence 需要固定尺寸——0×0 的 Turbulence 不会影响任何粒子。噪声图会被缩放到 Turbulence 的尺寸使用 curl旋度生成力向量。3.4 Age年龄控制Age 修改粒子的年龄让粒子跳到生命周期的指定位置。两个核心属性lifeLeft设置粒子的剩余生命毫秒。粒子会跳到生命还剩 lifeLeft 毫秒的状态advancePosition是否同时推进位置/速度/加速度advancePosition的区别true默认位置、速度、加速度都会推进到对应时间点的状态——粒子会瞬移到新位置false只推进外观属性如透明度、大小位置不变——粒子在原地老化Age 也被称为Kill 影响器——默认参数lifeLeft: 0会立即杀死所有受影响的粒子。四、代码实现4.1 Affector_Wander.qml随机游走Emitter { anchors.centerIn: parent width: 1; height: 1 emitRate: 60 lifeSpan: 10000 size: 10 velocity: PointDirection { x: 0; y: 0 xVariation: 50 yVariation: 50 } } Wander { system: particleSystem xVariance: 200 yVariance: 200 pace: 200 }xVariance: 200, yVariance: 200粒子在 ±200 像素范围内随机游走。设为 0 时该方向不受影响。pace: 200每秒最大变化 200 像素。pace 越大粒子抖动越快pace 越小粒子缓慢漂移。Emitter 的初始速度几乎为 0x: 0, y: 0粒子主要靠 Wander 运动。lifeSpan: 1000010 秒让粒子有足够时间展示游走行为。4.2 Affector_Turbulence.qml湍流Emitter { anchors.left: parent.left anchors.verticalCenter: parent.verticalCenter width: 1; height: 1 emitRate: 100 lifeSpan: 10000 size: 16 velocity: AngleDirection { angle: 0 angleVariation: 15 magnitude: 250 magnitudeVariation: 100 } } Turbulence { system: particleSystem anchors.centerIn: parent width: 256 height: 256 strength: 300 noiseSource: qrc:/images/perlin_noise.png }strength: 300扰动强度。strength 越大粒子轨迹越混乱。示例中支持切换 100-2000 的不同强度。noiseSource指向一张 Perlin 噪声图。噪声图的质量直接影响湍流效果——平滑的黑白噪声图效果最好。不提供时使用默认噪声图。作用区域Turbulence 只在 256×256 的矩形区域内生效。粒子进入区域后受湍流扰动离开区域后恢复原有运动。代码中用半透明蓝色边框可视化了区域范围。4.3 Affector_Age.qml年龄控制Emitter { anchors.left: parent.left anchors.verticalCenter: parent.verticalCenter width: 1; height: 1 emitRate: 80 lifeSpan: 6000 size: 12 velocity: PointDirection { x: 120 xVariation: 30 } } Age { system: particleSystem x: parent.width / 2 - 100 width: 20 height: parent.height lifeLeft: 500 advancePosition: false }lifeLeft: 500粒子穿过 Age 区域后剩余生命被设为 500ms。原本还有 6 秒寿命的粒子穿过区域后只剩 0.5 秒。advancePosition: false只推进外观属性透明度、大小等位置不变。粒子在原地快速老化——如果设为 true粒子会瞬移到 0.5 秒后的位置。视觉效果粒子从左侧向右发射穿过页面中央的红色垂直区域后剩余生命骤减在区域右侧快速消亡。代码中用半透明红色边框可视化了区域范围。五、运行效果Affector_Wander.qml紫色星形粒子从中心缓慢扩散在空间中大幅随机游走形成布朗运动效果。Affector_Turbulence.qml蓝色星形粒子从左侧向右发射穿过页面中央的蓝色区域时受强烈湍流扰动轨迹变得混乱。可通过按钮切换不同强度。Affector_Age.qml红色星形粒子从左侧向右发射穿过页面中央的红色区域后生命周期被加速消耗在区域右侧快速消亡。六、适用边界与限制条件Wander 的 xVariance/yVariance 设为 0 时该方向不受影响只设 xVariance 不设 yVariance粒子只在水平方向游走Turbulence 需要固定尺寸0×0 的 Turbulence 不会影响任何粒子必须设 width 和 heightTurbulence 的噪声图质量影响效果平滑的黑白噪声图如 Perlin 噪声效果最好粗糙的噪声图会产生不自然的扰动Age 的 lifeLeft 为 0 时立即杀死粒子这是默认行为也称为Kill 影响器Age 的 advancePosition 影响很大true 时粒子会瞬移false 时粒子在原地老化——视觉效果完全不同七、总结三种行为影响器对应三种粒子行为模式Wander 是随机游走雪花飘动Turbulence 是湍流扰动火焰、烟雾Age 是年龄控制加速消亡。选型依据漂浮用 Wander扰动用 Turbulence消亡控制用 Age。下一篇讲解尾迹发射器——TrailEmitter 如何让运动粒子留下尾迹。资源下载qml_particlesystem —— 包含完整的、可运行的代码系列目录上一篇Qt Quick 粒子系统十物理影响器——重力、摩擦与吸引本文Qt Quick 粒子系统十一行为影响器——游走、湍流与年龄下一篇Qt Quick 粒子系统十二尾迹发射器