⚽️

【UE5】自作AbilityTaskでTick処理を実装する方法

2024/10/24に公開

概要

AbilityTaskをC++で自作する時に、Tickで処理待ちしたいことがありました。
実際、指定した座標まで移動するUAbilityTask_MoveToLocationはTick処理を使って座標が到達するのを待っていました。

Plugins\Runtime\GameplayAbilities\Source\GameplayAbilities\Private\Abilities\Tasks\AbilityTask_MoveToLocation.cpp
void UAbilityTask_MoveToLocation::TickTask(float DeltaTime)
{
    //省略
    if (CurrentTime >= TimeMoveWillEnd)
    {
        bIsFinished = true;
    
        // Teleport in attempt to find a valid collision spot
        MyActor->TeleportTo(TargetLocation, MyActor->GetActorRotation());
        if (!bIsSimulating)
        {
            MyActor->ForceNetUpdate();
            if (ShouldBroadcastAbilityTaskDelegates())
            {
                OnTargetLocationReached.Broadcast();
            }
            EndTask();
        }
    }
    //省略
}

今回はTick処理を受け取れるAbilityTaskを作る方法について記事にしました。

環境

UE5.4.4

やり方

やることは2つです。

  • bTickingTaskをtrueにする
  • TickTask関数を実装する

TickTask関数を実装するだけでは動かなかったので、bTickingTaskもtrueになっているか確認する必要があります。

Discussion