2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

KLab EngineerAdvent Calendar 2023

Day 15

【UE5】GASでエイムモード【BPのみ】

Last updated at Posted at 2023-12-15

はじめに

BlueprintのみでGameplayAbilitySystem(GAS)でエイムモード切替を作ってみました。
Blueprintだけでも(やや不便ですが)Abilityが作れます。
GASを使うと、Actorの外にActorの能力を書くことが出来るので、とてもスッキリします。
また、アイテムを買った時に能力を追加するなど、動的なゲームプレイ拡張にも使えそうです。

ところが、BPのみだと、ActivateAbilityはできますが、CancelAbilityなど外部からAbilityを終了させるメソッドが直接は呼び出せません。
しかし、GameplayEventを使えば、BPのみでAbilityの動作を外から変えられますので、やってみましょう。

※この記事を作成したUEのバージョンは5.3.2です
※何度かBPコンパイルとエディタ再起動が必要ですが、記事上は割愛させてください

サードパーソンテンプレートで新規プロジェクトを作ります

image.png

GASの準備

GASプラグインを有効化

image.png
image.png

エイム能力と、エイム切り替えイベントにつかう、GameplayTagを追加します

このTagによって、発動中の能力の確認ができたり、Tag指定で能力発動ができたりしてとても便利です。

プロジェクト設定
image.png
GameplayTagsから、ゲームプレイタグを管理
image.png
+ボタンを押す
image.png
ability.aimと名付けて、タグソースを選択して、新しいタグを追加
image.png
これでability.aimというGameplayTagの追加ができました
同様に、event.toggleAimというTagも追加しておきます。
image.png

GameplayAbilityブループリント作成

エイム能力を作ります!
コンテンツブラウザ右クリック→ブループリントクラス
image.png
GameplayAbility選択
image.png
ファイル名はGA_Aimにしておきます。
このファイルにエイム処理を書いていきます
image.png
GA_Aimをダブルクリックして、表示も今のうちにフルブループリントエディタにしておきます
image.png
詳細のAbilityTagsから、先程追加したaimをチェック
image.png

エイム処理を書く

エイム中は、プレイヤーキャラが以下のような状態になります
・カメラがキャラに寄って
・キャラの向きが固定になる

カメラがキャラに寄って、キャラの向きが固定になる

引き続きGA_Aimの編集処理が続きます。
GA_Aimでは、event.toggleAimイベントで、エイムモードを切り替える処理を書きます。
image.png

FlipFlop Aから、以下を書きます。
image.png
FlipFlop Bから、以下も書きます。
image.png
GA_Aim全体はこんな感じになりました。
image.png

キャラに能力を持たせて、発動

手順は以下のような感じ
・GA_Aim能力をキャラに持たせて、能力を発動
・能力発動中は、event.toggleAimイベントを受けるごとに、エイムモード切り替え

まずは能力をもたせます。

キャラのBPであるBP_ThirdPersonCharacterを開いて、
コンポーネントからAbilitySystemを追加します。
image.png
AbilitySystemをイベントグラフ上にドラッグして、
GiveAbilityノードを出して、
GiveAbilityのAbilityClassにはGA_Aimを指定して、
GiveAbilityのReturnValueから、Promote to variableを選びます
image.png
変数名はAimAbilityHandleとしました。
image.png
実行ピンを以下のように繋ぎます。
image.png
これでキャラにAim能力が付与されました。

つぎはエイムの切り替え処理を書きます

手順は以下のような感じ
・EnhancedInputSystemでevent.toggleAimというGameplayEventを投げる
・event.toggleAimを受け取ったら、エイムモードを切り替える
まずはEnhancedInputSystemようのアセット作成します。
コンテンツブラウザで、右クリック、入力、入力アクション
image.png
名前はIA_ToggleAimとします
image.png
コンテンツブラウザで、右クリック、入力、入力マッピングコンテキスト
image.png
名前はIMC_Aimとします。ダブルクリックで開いて、IA_ToggleAimを左Ctrlキーとバインドします
image.png
この入力バインドを、GA_Aim能力付与と同じタイミングで付与しましょう。
BP_ThirdPersonCharacterのGA_Aimを付与した箇所で、以下のようにします。
image.png
これでキャラがIA_ToggleAimを受け取れるようになるので、エイム切り替えを行います。
以下のようにします。
image.png
image.png
これで、IA_ToggleAim入力がキャラに届いたら、event.toggleAimがGASに送られ、受け取ったGA_Aimがエイムを切り替えます。

動作確認

左ctrlキーでエイムモード切り替え!!
GasAim.gif

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?