【UE5】数字が増えていくアニメーション
加算アニメーション
2種類の方法を紹介します。
Timelineを使う方法
画像1
1. ActorにTimelineを用意
TimeLineをダブルクリックで開き、「+トラック」の部分より、フロートトラックを追加します。トラック名は 「Alpha」 にしておきます。
右クリックでキーを追加し、キーを選択した状態で、時間と値を設定します。
画像2
キーは2つ打ちます。
1つ目のキーは時間と値を0に設定
2つ目のキーは時間と値を1に設定
こうしてAlphaには1秒かけて0~1の値が入るようになりました。
2. Timelineによって得た値を使ってWidgetのTextを書き換える
「画像1」で示したように、Lerpの値をWidget側で設定したイベントに伝えます。
Lerpの設定ですが、Aには古いスコアを、Bには新しいスコアを設定します。
Widget側のイベントは以下のようになっています。
画像3
これで完了です。
Timelineを使う方法はとても楽でいいですね!
Tickを使った方法
大まかな内容
- Actor Componentにカウントアップ処理を記述
- Actor Component内の変数を使って、Widgetに出力
1. カウントアップ用のActor Component「AC_Score」を用意
Actor Componentを作成します。名前は「AC_Score」としておきます。
「AC_Score」をPlayer Controllerなど任意のアクタに追加します。
2. 「AC_Score」に以下の変数を用意
OldScore
デフォルト値:0
CurrentScore
デフォルト値:0
ShowScore
デフォルト値:0
Widgetに反映させる用の変数
Time
デフォルト値:0.5
ElapsedTime
デフォルト値:0.0
TimeRate
デフォルト値:0.0
3. 「AC_Score」にスコアアップ開始イベントを用意
説明
こちらのイベントは、加算アニメーションさせたいタイミングで別アクタから呼びます。ここでは加算アニメーションさせるうえでの前準備をしています。
Set Component Tick Enabled
でTickをOnにすることにより加算アニメーションが始まります。
4. 「AC_Score」のTickを使って加算処理をさせる
説明
変数:ElapsedTimeで経過時間を記録しています。
変数:Timeが0.5に設定されているので、0.5秒ほど経過すると加算処理が終了します。
加算処理終了のタイミングで変数:ShowScoreに変数:CurrentScoreの値をセットして最終的な値が正しくなるように調整しています。
5. Widget側の用意
「AC_Score」の変数:ShowScoreの値をWidget側に反映させる処理を作っておきます。
だいたい以下のような感じです。
バインディング作成
WidgetのTextBlockには特定の変数の値と紐づけるバインディングの機能があります。
「バインディングを作成」後に関数が作られます。
関数内の処理
関数内で変数:ShowScoreの値を毎フレーム参照します。
6. 実行
任意のタイミングで「AC_Score」のUpdateScoreイベントを呼ぶと加算アニメーションが実行されます。
Discussion