はじめに
今回はゲームによくある、キーバインドの変更を行います。
4.26.2・サードパーソンテンプレートで解説します。
説明読むのめんどくさいぜ!結論だけ教えてくれや!!という方は
解説
①ウィジェットの作成
ウィジェットの作成に関しては別記事で細かく説明しているのでこちらの記事の①のキャラクターブループリントに適応する前まで行ってください。
またウィジェットブループリントの名前はWBP_KeyBindに変更してください。
②UIの配置
パレットからInputKeySelectorを探し、ウィジェット上にドラッグアンドドロップします。
階層から名前をJumpKeyBindButtonに変更します。
サイズを調整したあとに
アピアランスからNo Key Specified Textの名前を現在のキーの名前に変更します。
ここらへんのデザインはお好みで~
③入力処理を実装する
ボタンの詳細の一番下からイベントを作成することができます。
On Key Selectedを押します。
グラフに移動したら以下のようにノードを組みます
アクションマッピング~などは状況に合わせた表示のチェックを外さないと出てこないので気を付けてください。
☆解説☆
イベントSelectedKeyからプレイヤーが入力したキーが返ってきます。
入力設定の取得からゲーム上の入力を取得します。
名前別のアクションマッピングの取得は
プロジェクト設定のインプットのアクションマッピングを参照しています。
つまり、エディタ上のマッピングも上書きされます。
Jumpにマッピングされたアクションをすべて削除します。
すべて削除したらCompletedが呼ばれるので
そこで入力されたマッピングを追加されるようにできています。
アクションマッピングのバインドを変更する場合は上のノードを
軸マッピングを変更する場合は下のノードと使い分けましょう。
④キャラクターからの制御
あとはウィジェットを表示するだけです。
ThirdPersonCharacterを開きましょう。
全体像
ウィンドウ表示ボタンを押したときにウィジェットが存在するかチェックします。
なければ生成します。
表示後ゲームを一時停止してマウスカーソルを表示ます。
もう一度押された場合は非表示にして一時停止を解除しカーソルを消します。
変更するキーはポーズ中でも動作できるようにしておきましょう。
実行してみましょう
プレイ中にタブを押して
ボタンを押してみましょう
ジャンプのバインドが変更されているはずです。
⑤関数にまとめる
キーバインド処理を関数にまとめる。
大量のキーバインドを作成するときに関数に処理をまとめておくと使う時に便利です。
関数の中身
この関数ではマッピング名が存在しないとログを出力するようにしています。
これを行わないと新規で誤字のマッピングが追加されてしまうので気を付けてください。
以下のサイトからコピペできます。
https://blueprintue.com/blueprint/_01mtafk/
さいごに
いかがだったでしょうか。
注意点として以下のことを考慮してください。
・ゲームを終了したときにウィジェット上のバインド名が異なっている。
→キーマッピング適応時に文字列をセーブできるようにして、設定を開いたら読み込むようにしましょう。
文字列取得▼
・キーバインドを重複していても設定できてしまう。
→セーブした文字列から一致したものがないかを検出すれば重複確認をすることができるとおもいます。(入力設定から全検索するのは多分重い)
ビューがある程度いけば解説記事出すかもしれないです。
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。