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
如果“是否启用”设置为 false,则该影响器不会影响任何粒子。
通常,这用于有条件地开启或关闭一个影响器。
默认值为 true。
groups : list<string>
哪些逻辑粒子组会受到影响。
如果为空,则将影响所有粒子。
once : bool
如果“仅一次”属性设置为 true,则该影响器在每个粒子的生命周期内仅对其产生一次影响。如果该影响器通常模拟随时间变化的连续效果,那么在它影响粒子的那一瞬间,将模拟一秒钟时间内的效果。
默认值为 false。
shape : Shape
如果已定义了尺寸,则可以使用 shape 属性来调整非矩形区域的形状。
system : ParticleSystem
这是将受到该元素影响的系统。如果ParticleAffector 是ParticleSystem 的直接子元素,它将自动与之关联。
whenCollidingWith : list<string>
如果在此处指定了任何逻辑粒子组,则只有当被检查的粒子与这些组中某一组中的粒子发生相交时,粒子影响器才会被触发。
这与 groups 属性不同。groups 属性用于选择可能被检查的粒子,如果它们满足其他条件(包括位于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.