UE5 外部からアニメーションブループリント(Animation Blueprints)のステートマシン(State Machines)のステート(State)遷移時の条件を設定する(Request Transition Event、Query and Mark Transition Event、Transition Rules)
外部からアニメーションブループリント(Animation Blueprints)のステートマシン(Request Transition Event、Query and Mark Transition Event、State Machines)のステート(State)遷移時の条件を設定する方法です。
※UE5.1 からの機能なので注意して下さい。
こちらのツイートがあったので試してみました。
公式ドキュメントはこちら。
・アニメーションブループリント(Animation Blueprints)
https://docs.unrealengine.com/5.0/ja/animation-blueprints-in-unreal-engine/
・ステートマシン(State Machines)
https://docs.unrealengine.com/5.0/ja/state-machines-in-unreal-engine/
外部からアニメーションブループリントのステートの遷移条件を設定するには
「Request Transition Event」ノードと「Query and Mark Transition Event」ノードを使うようです。
まずは外部から「Request Transition Event」ノードを使って遷移条件を設定します。

「Target」には「Anim Instance」を設定します。
「Event Name」にはステートの遷移ルールで参照したい名前を設定します。
「Request Timeout」は…リクエストが受理される時間でしょうか(要確認)
「Queue Mode」と「Overwrite Mode」についてはちょっとわからないので調べてみようと思います。
とりあえず「Event Name」と「Request Timeout」を設定するだけでも動いたので試してみました。
こんな感じにノードを作ってみました。

上記はレベルBPで作成したもので、キャラクターのスケルタルメッシュが持つ「AnimBP」を使って
「Request Transition Event」」ノードを実行しています。
元となる「AnimBP」にはジャンプをさせるための「JumpStart」というステートがあるのでその名前に合わせています。
次に、この名前を使ってステートを遷移するための条件を設定します。
条件を設定するにはステートの遷移ルールで「Query and Mark Transition Event」ノードを参照します。

「Event Name」には遷移条件として使いたい名前を設定します。
前述の「Request Transition Event」を使った名前が一致すると「Return Value」が「true」になるようです。
というわけで外部からの処理でジャンプするように条件を設定してみました。

元からある変数を使った条件に「Request Transition Event」を追加してみました。
実行してみた結果はこんな感じになりました。
キーボードの「A」を押すごとにキャラクターがジャンプしているので上手くいっているようです。
これでいちいち専用の変数を用意したりしなくてよくなるのはすごく良いですね!
※UE5.1 からの機能なので注意して下さい。
こちらのツイートがあったので試してみました。
おそらくそのうちスライドなどが公開されると思いますので詳細はそちらに期待ということで!#UE5.1からはイベント駆動(ドリブン)でステートマシンのステート遷移を実装できるようになったよ!という動画
— おかず (@pafuhana1213) October 28, 2022
Request Transition EventノードによりAnimBPに通知したイベント名を元に遷移判定できるので、遷移判定のためだけに用意していたプロパティ・処理が不要になります!わーい!#UE5Study pic.twitter.com/26zHpq2lQY
公式ドキュメントはこちら。
・アニメーションブループリント(Animation Blueprints)
https://docs.unrealengine.com/5.0/ja/animation-blueprints-in-unreal-engine/
・ステートマシン(State Machines)
https://docs.unrealengine.com/5.0/ja/state-machines-in-unreal-engine/
外部からアニメーションブループリントのステートの遷移条件を設定するには
「Request Transition Event」ノードと「Query and Mark Transition Event」ノードを使うようです。
高解像度版。イベントの送信・受信側でEvent Nameをあわせる必要があるので注意です#UE5 #UE5Study pic.twitter.com/qJFZEPpCF5
— おかず (@pafuhana1213) October 28, 2022
まずは外部から「Request Transition Event」ノードを使って遷移条件を設定します。

「Target」には「Anim Instance」を設定します。
「Event Name」にはステートの遷移ルールで参照したい名前を設定します。
「Request Timeout」は…リクエストが受理される時間でしょうか(要確認)
「Queue Mode」と「Overwrite Mode」についてはちょっとわからないので調べてみようと思います。
とりあえず「Event Name」と「Request Timeout」を設定するだけでも動いたので試してみました。
こんな感じにノードを作ってみました。

上記はレベルBPで作成したもので、キャラクターのスケルタルメッシュが持つ「AnimBP」を使って
「Request Transition Event」」ノードを実行しています。
元となる「AnimBP」にはジャンプをさせるための「JumpStart」というステートがあるのでその名前に合わせています。
次に、この名前を使ってステートを遷移するための条件を設定します。
条件を設定するにはステートの遷移ルールで「Query and Mark Transition Event」ノードを参照します。

「Event Name」には遷移条件として使いたい名前を設定します。
前述の「Request Transition Event」を使った名前が一致すると「Return Value」が「true」になるようです。
というわけで外部からの処理でジャンプするように条件を設定してみました。

元からある変数を使った条件に「Request Transition Event」を追加してみました。
実行してみた結果はこんな感じになりました。
キーボードの「A」を押すごとにキャラクターがジャンプしているので上手くいっているようです。
これでいちいち専用の変数を用意したりしなくてよくなるのはすごく良いですね!
| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑