PR

【UE5】アニメーションブループリントの作り方

Unreal Engine 5

Unreal Engine 5で、キャラクターをアニメーションさせるためのブループリントの作り方です。
キャラクターの状況に合わせたアニメーションシーケンスを再生する処理をブループリントで実装して、アニメーションさせます。
この記事では、TPSテンプレートを簡略化して、「歩く」と「待機」のアニメーションのみで作ります。

  • コンテンツブラウザでフォルダを選択
  • フォルダ内で右クリック
  • 「アニメーション」の「アニメーションブループリント」を選択
  • スケルトンを選択して、「作成」で、アセットを作成
スポンサーリンク

2.イベントグラフの作成

ブループリントをダブルクリックして開き、イベントグラフ内で、アクタ情報を取得する処理と、移動有無を判定する処理を作成します。
イベントグラフ内で右クリックすると、ノードを検索して追加できるので、ノード同士を繋ぎます。

アクタ情報を取得する処理の実装

アニメーション初期化時に、このアニメーションブループリントを持つアクタから、CharacterとCharacter Movement Componentの情報を取得する処理です。

  • 「Event Blueprint Initialize Animation」で、アニメーション初期化時に処理を実行
  • 「Cast To Character」で、ActorクラスからCharacterクラスに変換して変数に格納
  • CharacterクラスからCharacter Movement Componentクラスを取得して変数に格納

移動有無を判定する処理の実装

アニメーション更新時に、Character Movement Componentの情報を取得して、キャラクターが移動有無を判定する処理です。

  • 「Event Blueprint Update Animation」で、アニメーション更新時に処理を実行
  • 変数に格納しているCharacterを取得して、Characterが有効なら処理を継続
  • 変数に格納しているCharacter Movement ComponentのVelocityから、XY平面上での速度を計算して変数に格納
  • CharacterのXY平面上の移動速度が閾値より大きい、かつCharacterの加速度が0ではない、という条件の判定結果を変数に格納

覚え書き

ノード検索時の注意点

「状況に合わせた表示」のチェックを外さないと検索できないノードもあります。

変数の追加方法

変数は、「マイブループリント」→変数の右の「+」で追加し、型を選択します。

変数取得の有効性判定

変数取得の有効性を判定するノードは、変数取得ノードを右クリック→「検証済みゲットに変換」で作成します。

キャラクターブループリントのキャスト

アニメーションブループリントでキャラクターブループリントをキャストすると、以下のデメリットがあるので、できるだけ避けた方が良いです。

  • パフォーマンスの悪化
    キャストは重めの処理なので、頻繁に行うとパフォーマンスが悪くなります。
    最初に変数に取得しておくと実行回数を減らせます。
  • 再利用性の低下
    アニメーションブループリントがキャラクターブループリントに依存するようになるので、異なるキャラクターブループリントに使用できなくなります。
    ブループリントインターフェースを使うと、キャラクターブループリントをキャストしなくてもキャラクターブループリントの変数を参照できます。
  • プログラムの複雑化
    キャラクターブループリントの値を参照するだけであれば良いですが、キャラクターブループリントの値を書き換える処理をアニメーションブループリントが行うと、処理が複雑化して全体の把握が難しくなります。
スポンサーリンク

3.AnimGraphの作成

AnimGraphでは、イベントグラフで計算、取得した情報を使ってアニメーションを再生する条件を設定します。
ここでは、キャラクターの移動有無の判定を使って、「歩く」と「待機」のアニメーションを切り替える処理を作成します。

ステートマシンノードの作成

ステートマシンノードは、その中に複数のステートと、ステートの切り替え条件となるトランジションを設定して利用します。

  • AnimGraph内で右クリック
  • ノードを検索し、ステートマシンを追加

ステートの作成

ステートは、ステートマシンの中に作成され、アニメーションの再生や合成を行います。

ステートの追加

ステートマシンに「歩く」と「待機」のステートを追加します。

  • ステートマシンをダブルクリックして開き、ステートマシン内で右クリック
  • 「ステートを追加」で「歩く」用と「待機」用のステートを追加

ステート内処理の実装

ステートが実行されたときに出力するアニメーションを設定します。

  • ステートをダブルクリックして開き、ステート内で右クリック
  • play ‘アニメーションシーケンス名’を検索して、再生するアニメーションを追加

トランジションの作成

トランジションは、ステート間の移行条件です。

トランジションの追加

ステートを繋ぐと、トランジションが追加されます。

  • ステートの外周をドラッグして、「Entry」と「待機」ステート、「待機」ステートと「歩く」ステートを繋ぐ

トランジション内処理の実装

トランジション内の「Result」に繋いだBooleanがTrueの場合に、ステートが移行します。

  • トランジションをダブルクリックして開き、イベントグラフで移動判定を格納した変数を取得
  • 「待機」から「歩く」へのトランジションで、移動判定の変数をそのまま「Result」に繋ぐ
  • 「歩く」から「待機」へのトランジションで、移動判定変数を「Not」を介して「Result」に繋ぐ

上記で作成したアニメーションブループリントを、キャラクターブループリントのスケルタルメッシュに設定すると、キャラクターが移動有無に合わせてアニメーションします。

以上です。

コメント

タイトルとURLをコピーしました