ゲーム開発備忘録

ゲームプログラマー UE4・5向けの記事を書いておりますので見ていただけるとありがたいです。

【UE4・UE5】ゲーム内のUIからキーバインドを変更するやりかた 

はじめに

今回はゲームによくある、キーバインドの変更を行います。

4.26.2・サードパーソンテンプレートで解説します。

説明読むのめんどくさいぜ!結論だけ教えてくれや!!という方は

こちらから

 

解説

ウィジェットの作成

 

ウィジェットの作成に関しては別記事で細かく説明しているのでこちらの記事の①のキャラクターブループリントに適応する前まで行ってください。

 

またウィジェットブループリントの名前はWBP_KeyBindに変更してください。

namiton.hatenablog.jp

 

②UIの配置

パレットからInputKeySelectorを探し、ウィジェット上にドラッグアンドドロップします。

f:id:namiton:20220222123901p:plain

階層から名前をJumpKeyBindButtonに変更します。

f:id:namiton:20220222124141p:plain

 

サイズを調整したあとに
アピアランスからNo Key Specified Textの名前を現在のキーの名前に変更します。

f:id:namiton:20220222132517p:plain

ここらへんのデザインはお好みで~

f:id:namiton:20220222133208p:plain

 

③入力処理を実装する

ボタンの詳細の一番下からイベントを作成することができます。

On Key Selectedを押します。

f:id:namiton:20220222124829p:plain

 

グラフに移動したら以下のようにノードを組みます

f:id:namiton:20220222130752p:plain

アクションマッピング~などは状況に合わせた表示のチェックを外さないと出てこないので気を付けてください。

f:id:namiton:20220222125517p:plain

 

☆解説☆

イベントSelectedKeyからプレイヤーが入力したキーが返ってきます。

入力設定の取得からゲーム上の入力を取得します。

f:id:namiton:20220222125850p:plain

名前別のアクションマッピングの取得は

プロジェクト設定のインプットのアクションマッピングを参照しています。

つまり、エディタ上のマッピングも上書きされます。

f:id:namiton:20220222125913p:plain

 

Jumpにマッピングされたアクションをすべて削除します。

f:id:namiton:20220222130820p:plain

すべて削除したらCompletedが呼ばれるので

そこで入力されたマッピングを追加されるようにできています。

f:id:namiton:20220222130837p:plain

アクションマッピングのバインドを変更する場合は上のノードを

マッピングを変更する場合は下のノードと使い分けましょう。

f:id:namiton:20220222130515p:plain

f:id:namiton:20220222130631p:plain

 

④キャラクターからの制御

あとはウィジェットを表示するだけです。

ThirdPersonCharacterを開きましょう。

全体像

f:id:namiton:20220222131728p:plain

 

ウィンドウ表示ボタンを押したときにウィジェットが存在するかチェックします。

なければ生成します。

f:id:namiton:20220222131759p:plain

表示後ゲームを一時停止してマウスカーソルを表示ます。

f:id:namiton:20220222131858p:plain

 

もう一度押された場合は非表示にして一時停止を解除しカーソルを消します。

f:id:namiton:20220222132018p:plain

変更するキーはポーズ中でも動作できるようにしておきましょう。

f:id:namiton:20220222132039p:plain

 

実行してみましょう

プレイ中にタブを押して

ボタンを押してみましょう

f:id:namiton:20220222133438p:plain

ジャンプのバインドが変更されているはずです。

 

⑤関数にまとめる

キーバインド処理を関数にまとめる。

大量のキーバインドを作成するときに関数に処理をまとめておくと使う時に便利です。

f:id:namiton:20220222140629p:plain

 

関数の中身

この関数ではマッピング名が存在しないとログを出力するようにしています。

これを行わないと新規で誤字のマッピングが追加されてしまうので気を付けてください。

f:id:namiton:20220222140743p:plain

以下のサイトからコピペできます。

https://blueprintue.com/blueprint/_01mtafk/

さいごに

いかがだったでしょうか。

注意点として以下のことを考慮してください。

・ゲームを終了したときにウィジェット上のバインド名が異なっている。

→キーマッピング適応時に文字列をセーブできるようにして、設定を開いたら読み込むようにしましょう。

文字列取得▼

f:id:namiton:20220222145137p:plain

f:id:namiton:20220222145121p:plain

キーバインドを重複していても設定できてしまう。

→セーブした文字列から一致したものがないかを検出すれば重複確認をすることができるとおもいます。(入力設定から全検索するのは多分重い)

 

ビューがある程度いけば解説記事出すかもしれないです。

 

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。