WorldEffects クラスは、ゲームオブジェクトをインスタンス化してプールします。これらのゲームオブジェクトは通常、パーティクル システムなどの何らかのゲーム効果を表しますが、何でもかまいません。最も一般的な使用例は、敵がダメージを受けたときに効果を呼び出すことです。
Health コンポーネントと Projectile コンポーネント、および他の多くのコンポーネントには、WorldEffects の Activate メソッドを呼び出して正しいゲーム効果をインスタンス化する Unity イベントがあります。渡される情報には、効果の名前、効果に適用される位置と方向が含まれます。この情報は、ImpactPacket クラスを使用して自動的にパックされます。通常、インスペクターのどこかに、効果の名前を入力するように求めるフィールドがあります。
効果を作成する場合、通常は完了時にそれ自体を非アクティブ化する機能が必要です。
たとえば、スプライト エンジンを使用してスプライト効果を再生する場合は、On Loop Once Unity イベントを使用して、GameObect.SetActive を false に選択してゲームオブジェクトを非アクティブ化します。パーティクル システムを使用している場合は、一定時間後にゲーム オブジェクトを非アクティブにする Basic Timer コンポーネントを使用できます。オブジェクトが非アクティブになると、システムはそれをプールし、必要なときに再度アクティブにします。
すでに述べたように、ゲーム エフェクトは必ずしもパーティクル タイプである必要はありません。LetsWiggle コンポーネントも使用できます。
たとえば、敵にヒットするたびに、LetsWiggle を設定して、トランスフォームの x スケールと y スケールを一時的に変更し、ストレッチ エフェクトを作成できます (ただし、スケール値を 1 に戻すことを忘れないでください)。
ゲーム オブジェクトに TextMeshPro が含まれている場合、システムはテキストにダメージ値を書き込み、敵に適用されたダメージを表示します。これには通常、テキストを移動するための LetsWiggle も含まれます。
任意の表面に適用できる Splatter エフェクトもあります。スプラッタを受け取るすべての表面には、マテリアル SplatterSurface が含まれている必要があります。スプラッタであるスプライトには、マテリアル Splatter が含まれている必要があります。これは、血のエフェクトを作成するのに最適です。
このシステムをセットアップするには、空のゲーム オブジェクトを作成し、それに WorldEffects コンポーネントを追加します。各ゲーム オブジェクト エフェクトをこのオブジェクトの子として配置し、[Grab Effects] ボタンを押して登録します。ゲームオブジェクトの名前は、システムが検索するエフェクトの名前です。実行時に、インスタンス化されたエフェクトはすべてここに配置されます。
Method | |
---|---|
Activate (ImpactPacket impact) | 効果を発動します。 |
ActivateWithDirection (ImpactPacket impact) | エフェクトを有効にします。これにより、プレハブが方向に応じて回転します。 |
ActivateWithInvertedDirection (ImpactPacket impact) | エフェクトを有効にします。これにより、プレハブが逆方向に回転します。 |
ActivateWithMirrorDirection (ImpactPacket impact) | 効果を有効にします。影響の x 方向が負の場合、効果は y 軸上で反転します。 |
World Effect Request
このコンポーネントを使用すると、呼び出すエフェクトを指定し、その位置やその他の関連プロパティを変更できます。これはオプションですが便利です。主な目的は、ReactionProfile と連携することです。ReactionProfile を使用すると、関連するゲーム エフェクトと反応を 1 か所にグループ化して、それを呼び出す AI またはオブジェクトの反応プロファイルとして機能させることができます。これにより、必要な作業量と接続が削減されます。
Property | |
---|---|
Activate | アクティブ化方法を選択します。 |
Type | LetsWiggle および TextMeshPro エフェクトの正しいタイプを設定します。 |
Position | このポジションは、エフェクトがインスタンス化される場所です。位置は通常、キャラクターのコライダーによって決定されますが、常にそうであるとは限りません。 たとえば、中心位置は、キャラクターのコライダーの正確な中心です。血しぶきの場合は、敵の足元付近にゲームオブジェクト エフェクトをインスタンス化するために、下部の位置を選択する必要があるかもしれません。 |
Quantity | インスタンス化するエフェクトの数。この値を最小値と最大値の間でランダム化することもできます。 |
Controller | WorldEffects への参照。この参照が空の場合、システムは静的メソッド (存在する場合) を介して WorldEffects を呼び出します。 |
Random Rotation | エフェクトにランダムな回転を適用します。最小値と最大値は、可能なランダム値の範囲を表します |
Random Offset | エフェクトの位置にランダムなオフセットを適用します。最小値と最大値は、可能なオフセット値の範囲を表します。 |
Check For Walls | 有効にすると、エフェクトが壁の内側でインスタンス化されているかどうかがチェックされます。 壁の内側でインスタンス化されている場合、ゲームオブジェクトの位置は、それを呼び出しているキャラクターまたはオブジェクトの中心位置に設定されます。 |
Effect Name | インスタンス化するエフェクトの名前。複数のエフェクトが指定された場合、システムはランダムに選択します。 |