ParticleAffector QML Type
在逻辑粒子生命周期的任何时刻对其属性进行更改。更多
| Import Statement: | import QtQuick.Particles |
| Inherited By: | Affector, Age, Attractor, Friction, Gravity, GroupGoal, SpriteGoal, Turbulence, and Wander |
属性
- enabled : bool
- groups : list<string>
- once : bool
- shape : Shape
- system : ParticleSystem
- whenCollidingWith : list<string>
信号
- affected(real x, real y)
详细说明
基本粒子影响器(ParticleAffector)不会改变任何属性,但可以在粒子满足特定条件时发出信号。
如果一个影响器有一个定义的尺寸,那么它将只影响其尺寸和在屏幕上的位置范围内的粒子。
影响器的性能特征与其他粒子系统元素不同。特别是,它们有一些简化,以尽量保持实时或更快的模拟速度。在运行带有效应器的系统时,如果不规则的帧计时时间过长(每帧 > 一秒),效应器就会试图通过更快但不太精确的模拟来偷工减料。如果系统有多个影响器,则无法保证它们的应用顺序,在模拟较大的时间偏移时,它们将分别模拟整个偏移,这可能导致与较小的时间偏移相比不同的结果。
在某些硬件上可以对具有多个影响因子的大量粒子(数百个)进行精确模拟,但在性能较差的硬件上,由于模拟粒度较低,模拟结果可能会出现小的不规则。
属性文档
enabled : bool
如果 enabled 设置为 false,则该影响因子不会影响任何粒子。
通常情况下,它用于有条件地开启或关闭一个影响因子。
默认值为 "true"。
groups : list<string>
将影响哪些逻辑粒子组。
如果为空,则会影响所有粒子。
once : bool
如果将 "一次 "设置为 "true",那么该影响因子在每个粒子的生命周期中只会对其产生一次影响。如果影响因子通常模拟的是随时间变化的连续影响,那么它将在影响粒子的瞬间模拟一秒钟的影响。
默认值为假。
shape : Shape
如果定义了尺寸,则可以使用形状属性来影响非矩形区域。
system : ParticleSystem
这是受元素影响的系统。如果ParticleAffector 是ParticleSystem 的直接子系统,则会自动与之关联。
whenCollidingWith : list<string>
如果在此处指定了任何逻辑粒子群组,那么只有当被检测粒子与这些群组中的某个粒子相交时,才会触发粒子影响器。
这与组属性不同。群组属性选择了可能被检查的粒子,如果这些粒子符合其他条件(包括在ParticleAffector 的范围内,并根据形状进行了修改),那么它们将再次被检测,看是否与 whenCollidingWith 中的某个粒子群组中的粒子相交。
默认情况下,没有指定任何组别。
信号文档
affected(real x, real y)
当一个粒子被选中受到影响时,就会发出这个信号。如果某个粒子被ParticleAffector 考虑,但实际上并未受到任何影响,则不会发出该信号。
在ParticleAffector 没有可能产生影响的特殊情况下(例如ParticleAffector {}),如果您连接到 ,则所有被考虑的粒子都会发出该信号。这样就可以针对粒子执行任意代码(如果要执行影响粒子本身的代码,请使用 ParticleAffector::onAffectParticles 信号处理器)。由于这会执行每个粒子的 JavaScript 代码,因此不建议在大容量粒子系统中使用此信号。
(x,y) 是粒子的当前位置。
注: 相应的处理程序是onAffected 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.