UEProg by milkc0de

    Search

    Home

    UEFN Verse: ガード撃破位置にVFXを出す

    Guardヘッドショットで「headshot」を1秒表示する(3デバイスのみ)

    UEFN / Verseでプレイヤー名を表示する方法

    UEFN Verseサンプル - Trigger起動でBearのPropがプレイヤーについてくる

    ガードの行動範囲を「プレイヤー中心」に縛る(Leash)ガードAI

    通常編集とシンプル編集で 窓開けリセットの最短時間を測定

    UEFN: 建物内が暗くなる場合の対処(Cast Shadow一括OFF) by milkc0de

    UEFN / VerseのみでPINコード・パスコード入力パッドを実装する

    UEFN / Verseのみで作ったPINコード入力パッドを初心者向けに分解して解説する

    UEProg by milkc0de

    Home

    UEFN / Verseでプレイヤー名を表示する方法

    UEFN Verseサンプル - Trigger起動でBearのPropがプレイヤーについてくる

    UEFN Verse: ガード撃破位置にVFXを出す

    Guardヘッドショットで「headshot」を1秒表示する(3デバイスのみ)

    ガードの行動範囲を「プレイヤー中心」に縛る(Leash)ガードAI

    通常編集とシンプル編集で 窓開けリセットの最短時間を測定

    UEFN: 建物内が暗くなる場合の対処(Cast Shadow一括OFF) by milkc0de

    UEFN / VerseのみでPINコード・パスコード入力パッドを実装する

    UEFN / Verseのみで作ったPINコード入力パッドを初心者向けに分解して解説する

    milkc0de

    XTwitch
    UEProg by milkc0de
    /
    UEFN Verse: ガード撃破位置にVFXを出す(SpawnedEvent + EliminatedEvent)
    UEFN Verse: ガード撃破位置にVFXを出す(SpawnedEvent + EliminatedEvent)

    UEFN Verse: ガード撃破位置にVFXを出す(SpawnedEvent + EliminatedEvent)

    by milkc0de

    ガードを倒した瞬間、その場にエフェクトを出したい場合は、

    1. ガードがスポーンしたタイミングで EliminatedEvent を購読
    2. 撃破イベントで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を移動+再生する

    撃破位置トリガー系の基本パターンとして、そのまま流用できます。

    image
    using { /Fortnite.com/Devices }
    using { /Fortnite.com/Characters }
    using { /Fortnite.com/Game }
    using { /Verse.org/Simulation }
    using { /UnrealEngine.com/Temporary/Diagnostics }
    
    vfx_device := class(creative_device):
    
        @editable
        VFXSpawner: vfx_spawner_device = vfx_spawner_device{}
    
        @editable
        GuardSpawner: guard_spawner_device = guard_spawner_device{}
    
        OnBegin<override>()<suspends>:void=
            GuardSpawner.SpawnedEvent.Subscribe(OnSpawnGuard)
    
        OnSpawnGuard(SpawnedGuard:agent):void=
            if (Chara := SpawnedGuard.GetFortCharacter[]):
                Chara.EliminatedEvent().Subscribe(OnGuardEliminated)
    
        OnGuardEliminated(EliminationResult:elimination_result):void=
            Character := EliminationResult.EliminatedCharacter
            T := Character.GetTransform()
            VFXSpawner.TeleportTo[T] or false
            VFXSpawner.Restart()