N煎ログブログ

n番煎じと言っても過言ではない今更な、でも個人的に躓いたUnityやUE4等での開発についての云々を書いていきます

【UE4】スキル使用時等の複数のアニメーションを単一のステートで管理する方法

目次

はじめに

UE4にはアニメーションをステートマシンで遷移させる仕組みがありますが、この機能をそのまま使用して複数のアニメーションを管理しようとした場合、あっちこっちに遷移の線が伸びてしまって管理しにくくなります。

f:id:isemito:20171215175351p:plain

複数アニメーションを使用する場面は多々ありますが、これらをたった1つのステートで管理できる方法があります。

以下ではgyazoによる動画を貼っていますがデフォルトでループ再生にならないため、右クリックから「コントロールを表示」で手動で再び再生させる必要があります(ループにチェックを入れればなお良し)。

アニメーションシーケンスに渡すアニメーションを変数化

通常、ステート内にアニメーションステートを追加する場合、以下のようにアニメーションアセットをD&Dして追加すると思いますが(検索かけたり等とか)、

gyazo.com

この時、ステート内の「再生◯◯」というノードに渡すアニメーションは変数化することが出来ます。

その方法は、まずステート内に移動し、「再生◯◯」ノードの詳細にある「(As pin) Sequence」にチェックを入れるだけです。

gyazo.com

こうすることで再生させるアニメーションを直接指定させることが出来るようになりました。

あとはこのピンから線を伸ばして変数を作成します。

gyazo.com

後は、プレイヤー等の外部から「何のアニメーションを再生させるか」を引数として持つ関数を作成して呼び出せるようにしておけば、ステートを複数作成しなくても単一のステートアニメーションとして動作させることが出来ます(型はAnimSequenceBase)。

f:id:isemito:20171215182209p:plain

どう使うか

私の場合は、事前にデータベース化しておいた各Perk(スキル)情報にPerk使用時に再生させたいアニメーションを格納しておき、使用時にアニメーションBPに情報を渡す、という手法をとっています。

f:id:isemito:20171215183833p:plain

f:id:isemito:20171215183846p:plain

これを、解釈が間違っていなければ「アフォーダンス指向」と呼ぶそうです。

以下のサイトの情報を参考にしました。

www.4gamer.net

まとめ

以下のような複数のアニメーションを...

f:id:isemito:20171215175351p:plain

アフォーダンス指向でこんなにスッキリさせることが出来た!

f:id:isemito:20171215184223p:plain