by milkc0de
ガードを倒した瞬間、その場にエフェクトを出したい場合は、
- ガードがスポーンしたタイミングで EliminatedEvent を購読
- 撃破イベントでVFXスポナーを移動して再生
という構造にすると安定します。
全体コード(そのままコピペ用)
処理の流れ
1. SpawnedEvent でガードを捕まえる
guard_spawner_device の SpawnedEvent は、ガード生成時に発火します。
ここで agent から FortCharacter を取得し、その個体に対して撃破イベントを購読します。
OnSpawnGuard(SpawnedGuard:agent):void=
if (Chara := SpawnedGuard.GetFortCharacter[]):
Chara.EliminatedEvent().Subscribe(OnGuardEliminated)2. EliminatedEvent で撃破座標を取得
EliminatedEvent() の引数は elimination_result 型です。
そこから EliminatedCharacter を取得し、GetTransform() で座標を取ります。
OnGuardEliminated(EliminationResult:elimination_result):void=
Character := EliminationResult.EliminatedCharacter
T := Character.GetTransform()3. VFXスポナーを移動して再生
TeleportTo で撃破位置へ移動し、Restart() でエフェクトを再生します。
VFXSpawner.TeleportTo[T] or false
VFXSpawner.Restart()or false を付けているのは、失敗しても処理を止めないためです。
エディタ側の設定
- この Verse クラスをアタッチした
creative_device GuardSpawnerに guard_spawner_device を割り当てVFXSpawnerに vfx_spawner_device を割り当て- VFXSpawner 側で再生したいエフェクトを設定
デバッグ用ログ追加版
OnGuardEliminated(EliminationResult:elimination_result):void=
Character := EliminationResult.EliminatedCharacter
T := Character.GetTransform()
if (VFXSpawner.TeleportTo[T]):
Print("VFX Teleport OK")
else:
Print("VFX Teleport FAILED")
VFXSpawner.Restart()まとめ
- SpawnedEvent で生成個体を捕まえる
- FortCharacter の EliminatedEvent を購読する
- elimination_result から撃破座標を取り、VFXを移動+再生する
撃破位置トリガー系の基本パターンとして、そのまま流用できます。

