アルゴンUE4/UE5開発日記

UE4/UE5の機能やプラグインを紹介します。初心者や中級者向けになってます!!

【UE5】Chooserを活用して連続攻撃を作る

Chooserを使ってみましょう(・ω・)!

今回はChooserという動的にアセットを選択するものを活用して、

簡単にコンボ攻撃を作成してみようと思います。

実際に動かしたものはこちらの動画になります。

※UE5.8.1で作成しています。
 バージョンごとに違うかもしれません。
※ThirdPersonTemplateプロジェクトを活用しています。
※書き間違え等あればコメントください!

実際に動作させたものはこちらになります。

Chooserとは?

ざっくりいうと設定したON・OFFやパラメータの範囲によって、
動的にアセット(クラスや構造体など)を選択する機能になります。

この機能により各種切り替えがより簡単かつ、
様々な切り替えを行えるようになっています。

他いろいろ活用法を調べたら各種Boolの状態を切り替えて、
マテリアルをリアルタイムで変更したりだとか、
モーションマッチングを変更して武器を持っている状態を、
変更したり切り替えてたりしているチュートリアルもありました。

今回私の方で紹介するのはChooserを活用して、
Floatの値の範囲でコンボの攻撃のアニメーションを切り替えて、
AnimNotifyを改良してコンボを継続かリセットする通知を作り、
攻撃アクションをするタイミングで、
Chooserのコンボ攻撃アニメーションを動作する仕組みです。

各種参考にさせていただいたリンクは下記になります。

◎参考リンク

※公式での活用方法の紹介
Unreal Engine の動的アセットの選択 | Unreal Engine 5.8 ドキュメンテーション | Epic Developer Community
※今回メインで参考にした動画
https://www.youtube.com/watch?v=G41RGiXLhnE&t=2s
※その他基本動作の紹介をしているブログ

【UE5】Chooserで始めるデータドリブン管理 – 株式会社ロジカルビート

・目次に戻る

プラグイン準備と入力・アニメーションの用意

実際にChooserプラグインの有効化と攻撃アクション用の、
インプットアクションを作成していきます。

まずはChooserプラグインをONにするために、
プラグインの画面から「cho」で検索してChooserをONにします。

Chooserプラグインの有効化続いてInputActionを追加します。
入力のインプットアクションを作成します
IA_ComboAttackというアクションを作りました。

入力アクションを作成    入力アクションを作成

作成したら入力マッピングコンテキストのMappingsに追加します。
マウスの左ボタンを適応します。
こちらで左クリックのアクションが追加できます。

コンボ攻撃の入力を行う

続いてアニメーションを作成します。
今回活用するアニメーションはテンプレートで用意されている、
UnarmedのAttackフォルダに用意されている攻撃アニメーションを活用します。

各種アニメーションを活用

各種アニメーションにEnableRootMotionをONにします。
こうすることで移動入力を入れてもその場でアニメーションします。
アセットアクション→プロパティマトリクスを選択して編集します。

プロパティマトリクスからの編集すべての項目のEnable Root Motionにチェックを入れます。

Enable Root Motionを選択ここまで出来たら後はアニメーションシーケンスを選択して、
作成する→AnimMontageを作成を選択して、
アニメーションモンタージュが出来上がれば完了です。

モンタージュの作成Montageの作成これでプラグイン準備と各種データの準備は完了したので、
各種動作を作成していきます。

・目次に戻る

コンボアクションの作成

それでは実際にコンボ動作を作成していこうと思います。
今回動作の核となるブループリントコンポーネントを作成します。
ブループリントクラスからアクターコンポーネントを選択します。
BPC_AttackComboというものを作成しています。アクターコンポーネント
アクターコンポーネントで設定した変数をチューザーテーブルで、
活用するので変数を作成します。
?CanAttack → 攻撃可能タイミングかどうか 初期値は☑あり
?isAttack → 攻撃中かどうか 初期値は☑なし
ComboCount → この数値でどの攻撃アニメーションをするか
CanJump → 攻撃中のジャンプ管理をする

アクターコンポーネントに変数を追加する
変数の準備ができたのでチューザーテーブルを作成します。
データ→チューザーテーブルを選択します。

チューザーテーブルの作成
チューザーテーブルを作成して各種設定をします。
Chooser Type → Generic Chooserを選択
Result Type → Object Of Tyoeを選択
Resutl Class → AnimMontageを選択
◎パラメーター
・Parameters → Class Parameterを選択
・クラス → 作成したアクターコンポーネントを選択
・方向 → Inputを選択

ChooserTableの各種値を指定
これでチューザーテーブルで扱う設定は完了したので、
そのテーブルに設定する条件とデータを作成します。
まずは範囲設定を行います。
今回はFloatの値に応じてどの動作を行うのか決めているので、
こちらに合わせて列を追加から「Float Range」を選択します。

Float Range
Float Rangeを追加したらFloat範囲下のドロップダウンから、
アクターコンポーネント側で作成した「ComboCount」を選択します。

アクターコンポーネントの変数を指定

あとは行を追加してAnimMontageとぞれぞれ値を設定します。

行の追加
Floatの幅をそれぞれで設定します。
1番目の攻撃:ComboCount → 0~0        AnimMontage1
2番目の攻撃:ComboCount → 0.9 ~ 1.1   AnimMontage2
3番目の攻撃:ComboCount → 1.9 ~ 2.1   AnimMontage3

値を設定した後
これでチューザーテーブルの設定を行ったのでアクターコンポーネントに戻り、
各種処理を作成していきます。
攻撃行動のフラグ設定とChooserTableからアニメーションを動作させています。

動作1

アクターコンポーネント2

また今回通知のタイミングでコンボのタイミングを取りますので、
それ用の関数として「AddComboCount」と「ClearCombo」の、
関数を作りそちらをカスタムした通知で呼ぶようにしています。

各種通知用関数の作成
関数の処理は下記でAddComboCountではComboCountを加算して、
攻撃できるようにBool値を元に戻します。

AddComboCount動作ClearComboの場合はComboCountを0に戻して攻撃できるようにしています

ClearComboでコンボをクリアする処理攻撃用のアクターコンポーネントの処理は以上になります。
続いて先ほど作成したAddComboなどを呼び出す用の、
AnimNotifyを親クラスとしたブループリントを作成します。
※コンボカウント加算用とコンボクリア用の動作を作成します。

AnimNotifyBPの作成作成したAnimNotifyの各種処理は下記になります。
◎AddComboCount

AddComboCount用の通知BP作成◎ClearCombo

コンボクリア用の通知BPの作成

・目次に戻る

その他必要な設定

これで各種動作処理の作成はすべて完了したので、
あと行う作業は下記になります。
1.AnimMontageに作成したカスタム通知を追加
2.キャラクターBPにアクターコンポーネントを追加する。
3.ジャンプ処理を攻撃中行えないようにする。
4.AnimBPのIKの処理順番を変更する。

まずは1番のAnimMontageにカスタム通知を追加します。
1番目と2番目の攻撃アニメーションには、
コンボカウント加算とコンボクリアの通知を追加し、
3番目のコンボを継続しない攻撃はコンボクリアのみ設定します。
・1番目のアニメーション

1番目のアニメーション通知設定
・2番目のアニメーション

2番目のアニメーション通知設定
・3番目のアニメーション

3番目のアニメーション通知設定

続いて2.のキャラクターBPにアクターコンポーネントを追加します。
BP_ThirdPersonCharacterを開き、
左上の追加ボタンを押してBPC_AttackComboを選択します。

BPCの追加対応作業

続いてIA_JumpにCanJumpの状態をチェックする処理を追加します。
これは攻撃中にジャンプできないようにするためです。

ジャンプ処理に攻撃中の判定を追加

最後に4.のAnimBPのIKの処理順番を変更します。
サードパーソンテンプレートのABP_Unarmedを開きます。

アニメーションBPを開くAnimGraphを開いてControlRigとSlotのDefaultSlotの順番を入れ替えます。
なぜこのようなことをするのかというとこの状態だと、
腰から足までのアニメーションがfootIKの、
CotnrolRigのほうが優先されてしまうためです。

AnimMontageはスロットごとで再生されるので順番を変更して、
FootIKの影響を受けないようにします。

アニメーションの順序を変更

これですべての設定が完了しました!
これでChooserTableを活用したアクションの作成は完了です。

アクション動作

・目次に戻る

最後に

ここまで見ていただきありがとうございました。

今回はAnimMontageの切り替えの紹介でしたが、
ほかにもChooserTableでのGamePlaytagの活用や、
モーションマッチングの切り替えなど、
活用幅がいっぱいありますのでいろいろ試してもらえたらうれしいです。

次回の記事もまた見ていただけると幸いです!

・目次に戻る

【UE5.8】UnrealMCP&ClaudeCodeの連携設定について

今回はClaudeCodeとの連携記事になります(>_<)

今回はClaudeCodeを試した際の設定の流れや、

どれぐらい活用できるか試した記録になります。

実際に動かしたのは下記です。

※今回はWindowsでの設定方法になります。
※UE5.8機能を活用しています。
※書き間違え等あればコメントください!
※実際に動作させたのはこちらになります。

UnrealMCPとは

UnrealMCPは実験段階の機能でUnrealEditor内にMCPサーバーを、

作ることでClaudeCode,Cursor,MCPなどのAIアシスタントと、

HTTP接続してエディター内で活用する機能のことになります。

MCPの説明も少し説明します。

MCPはざっくり説明だとオープンソースで各種AIエージェントと

安全に連携するためのものになります。

深くMCPについて知りたい方は下記の説明も併せて見るのもよいかなと思います。

Model Context Protocol(MCP)とは?生成 AI の可能性を広げる新しい標準

また今回Claudeを使用していますが無料だとClaudeCodeは活用不可なので、
こちらを試す場合はPro以上が必要です。
※業務や毎日使う場合はProより上のエディションが良いかもしれません。

・目次に戻る

UnrealMCPとClaudeCodeの設定

それでは実際に設定していきます。
※今回はClauedCodeを活用した事例なので他の場合は異なるかと思います。

まずUnrealMCPのプラグインを有効にします。
「mcp」で検索して「MCP Client Toolset」と「Unreal MCP」に、
チェックを入れて有効化して再起動します。

mcp関連のプラグインの追加

それから各種ツールセットを活用するので「all to」で検索して、
All Toolsetsにチェックを入れて有効化して再起動します。

All Toolsetsを指定

プラグインの設定が完了したらエディタの環境設定を開き、
「ModelContextProtocol」のサーバー自動起動にチェックを入れます。

ModelContextProtocolの自動起動動作

最後にCmdで下記コマンドを実行していき「.mcp.json」を作成します。「ModelContextProtocol.GenerateClientConfig ClaudeCode」

コマンド指定

こちらが完了したのでClaudeCodeをインストールしていきます。
私はコマンドプロンプト経由でインストールしました。
インストールの注意点としてはGitをインストールしないと、
下記画像のようにインストール時にエラーが発生してしまいます。

Gitインストール時のエラー

Gitのインストーラーは下記サイトにあるので一応リンクを置いておきます。

Gitをインストールしたら下記コマンドを実行してClaudeCodeをインストールします。

「curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd」
インストールが無事成功したら下記のような表示になります。

ClaudeCodeインストール後の画面

インストールが完了したら環境変数を追加します。
これで「Claude」と入力するとClaudeCodeを活用できるようになります。

※Pathの環境変数に追加しないと動作しないので注意です!!!

Claudeのパスの追加

それでは実際「Claude」コマンドを実行していきます。
Claudeを初回起動した時にテーマの選択などがあります。
テーマ選択が完了したらESCキーでキャンセルして設定は完了です。

そしたら.Uprojectがあるフォルダへ「cd」コマンドで移動して、
「Claude」コマンドを実行します。

実行するとアクセス動作でこのフォルダ内を信用しますか?
みたいな英語が出てくるので、
「Yes , I trust this folder」を選択します。

フォルダを使用する動作を設定

次にMCPを活用するかの質問がくるので一番上か真ん中を選択します。
私は「Use this MCP server」を指定しました。

MCPサーバーを活用する稼働かのチェック

そうするとClaudeの画面が出てくるのでここまでくれば完了になります。

ClaudeCode設定完了

・目次に戻る

実際に動かしてみる

それでは実際にClaudeコードから指示してみようと思います。

「SM_Cylinder上にSM_ChamferCubeをStaticMeshActorとして配置してください。」

という指示を出して実際に配置されるか試してみます。

UnrealMCPでStaticMeshActorの配置を指定

途中でClaudeから利用可能なツールセットをすべて表示します。
というのが表示されて毎回聞かれるのも大変なので、
「Yes, and don't ask again for ~」の真ん中を選択します。

Yes, and don'tの設定

そしてすべて完了した際に下記画像のように、
指示通りに設定できていたらOKかなと思います。

ClaudeCodeでの指示出しで配置した場合

これだと味気ないのでZ軸で回転してみようと思います。

「配置したSM_ChamferCubeをZ軸で時計回りに回り続けるようにして。」

という指示を指定してみました。

RotatingMovementComponentを追加してZ軸に90度/秒で、
回転するように設定してくれたようです。

RotatingMovementComponentの追加指示

ただしこれだけだと実は動きません…StaticMeshComponentになっていて、
可動性(Mobility)がstaticのままなのでMovableに変更します。

「可動性がスタティックのままで動かないのでムーバブルに変更して。」

という指示を出して変更してもらいました。

Mobilityを変更してもらうように指示

実際に動作をさせて動かせるようになったのが下記動画になります。

簡単な依頼とUnreal-MCPの動作確認は以上になります。

また、Unreal上でターミナルを活用できるプラグインも登場していて、
そちらを活用する方もいるかもしれませんがそちらは日本語が、
文字化けしまっているので私はターミナルでよいかなと思ったので、
紹介させていただいた次第となります。

・目次に戻る

最後に

今回はUE5.8から追加されたUnrealMCPのClaudeとの接続や、
各種設定を紹介しました。

BP作成やMass AIなどの変更などもあると思うので、
いろいろ試していただければと思います。

今後BPの作成などいろいろ考えて作成していけたらと思います。
個人的には私はAIの設定ができて指示を設定してある程度、
思い描いてる処理が作れる程度になっておけばよいかなと思いました。

・目次に戻る