このページでは

ParticleAffector QML Type

論理粒子のライフサイクルにおける任意の時点で、その属性に変更を適用します。詳細...

Import Statement: import QtQuick.Particles
Inherited By:

Affector, Age, Attractor, Friction, Gravity, GroupGoal, SpriteGoal, Turbulence, and Wander

プロパティ

シグナル

詳細な説明

基底クラスの ParticleAffector は、いかなる属性も変更しませんが、パーティクルが特定の条件を満たした際にシグナルを発生させるために使用できます。

アフェクターにサイズが定義されている場合、そのサイズと画面上の位置の範囲内にあるパーティクルのみに影響を及ぼします。

アフェクターは、他のパーティクルシステム要素とは異なるパフォーマンス特性を持っています。特に、リアルタイムまたはそれ以上の速度でシミュレーションを維持するために、いくつかの簡略化が施されています。 アフェクターを含むシステムを実行している場合、フレーム間隔が過度に長くなると(1 フレームあたり 1 秒以上)、アフェクターは、より高速だが精度の低いシミュレーションによって処理を簡略化しようとします。 システムに複数のアフェクターがある場合、それらが適用される順序は保証されません。また、大きな時間シフトをシミュレートする場合、アフェクターはそれぞれシフト全体をシミュレートするため、小さな時間シフトの場合とは異なる結果になる可能性があります。

複数のアフェクターが存在する状態で大量のパーティクル(数百個)を正確にシミュレートすることは、一部のハードウェアでは可能かもしれませんが、処理能力の低いハードウェアでは、シミュレーションの粒度が低下し、シミュレーションにわずかな不規則性が生じることを想定しておく必要があります。

プロパティのドキュメント

enabled : bool

「有効」が false に設定されている場合、このアフェクターはどのパーティクルにも影響を与えません。

通常、これはアフェクターを条件付きでオンまたはオフにするために使用されます。

デフォルト値は true です。

groups : list<string>

どの論理パーティクルグループが影響を受けるか。

空の場合、すべてのパーティクルに影響します。

once : bool

「once」が true に設定されている場合、このアフェクターは各パーティクルのライフタイム中に 1 回のみ影響を与えます。アフェクターが通常、時間の経過に伴う継続的な効果をシミュレートする場合、パーティクルに影響を与えるその一瞬において、1 秒間の効果をシミュレートすることになります。

デフォルト値は false です。

shape : Shape

サイズが定義されている場合、shape プロパティを使用することで、長方形以外の領域に効果を与えることができます。

system : ParticleSystem

これは、その要素の影響を受けるシステムです。ParticleAffector がParticleSystem の直接の子要素である場合、自動的にそれに関連付けられます。

whenCollidingWith : list<string>

ここで論理的なパーティクルグループが指定されている場合、パーティクルエフェクターは、検査対象のパーティクルがこれらのグループのいずれかに属するパーティクルと交差している場合にのみトリガーされます。

これは groups プロパティとは異なります。groups プロパティは、検査対象となる可能性のあるパーティクルを選択するものであり、それらが他の条件(ParticleAffector の境界内にあること、shape によって修正されたものを含む)を満たしている場合、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.