43.Input(インプット)で操作入力を作る
Input(インプット)とは?
https://scrapbox.io/files/65c3d4eb3dba500025077b63.png
インプットとは、簡単に言うと操作入力を割り当てるためのノードになります。プロジェクト設定からインプットの操作入力を作成してその後ノードで使用します。基本的にはキャラクターの操作を作る場合はこのインプットの設定で操作を割り当てた方がより管理しやすく便利なのでこのInputを使用して実装します。
①インプットを作成して操作入力を作ってみよう
サードパーソンのプロジェクトを使用します。
キャラクターの操作をInputで実装したいのでまずはキャラクターを用意します。
右クリック > ブループリントクラス > Characterを選択して名前を「MyCharacter」にします。
https://scrapbox.io/files/65c3d57903622c0025e8a7ab.jpg
右上設定からワールドセッティングを開いて、選択したゲームモード > DefaultPawnClassにMyCharacterをドラッグで割り当てましょう。
https://scrapbox.io/files/65c3d592c930830023c18531.jpg
これで準備は完了です。プレイすると一人称のキャラになっています。何も操作はできません。
https://scrapbox.io/files/65c3d5b83dba500025077d91.gif
それではインプットを使用してジャンプする処理を作成していきます。
インプットはプロジェクト設定で操作ボタンを作成してからノードを作成するのでまずは設定からプロジェクト設定を開きます。
https://scrapbox.io/files/65c3d5e62d43c00024453352.jpg
インプットからアクションマッピングと軸マッピングを開きます。ここでインプットの設定ができます。
https://scrapbox.io/files/65c3d6215ab81100257aecc6.jpg
既にデフォルトではサードパーソンのキャラ操作のインプットが作成されています。
アクションマッピングと軸マッピングとは?
アクションマッピングにはキーを押した時(Pressed)と離した時(Release)した時の操作を設定できます。例えば、「攻撃」とか「ジャンプ」ボタンなどをここに作成していきます。軸マッピングには入力し続ける操作を設定できます。例えば「移動」や「視点操作」ボタンなどを設定します。
既存の設定は無視してもらって、アクションマップのプラスボタンを押します。新規アクションマッピングが作成されます。
https://scrapbox.io/files/65c3d6a7ca2cc900255a1b33.png
既にJumpという名前のボタンは作られているのですが、新規でJumpボタンを作成していきます。
新規アクションマッピングに「MyJump」と記載して、下でどのキーを割り当てるのか選択します。スペースでジャンプさせたいのでここには「スペースバー」を選択します。
https://scrapbox.io/files/65c3d6d6be9c11002500eb4b.png
右にあるShiftとかCtrlとかは何?
右にある例えばShiftにチェックを入れるとShift + Spaceでジャンプという事になります。https://scrapbox.io/files/65c3d71a824a110024bf3da2.png
またPS5などで使用するコントローラーでの操作に該当するキーはゲームパッド(Game Pad)という名前の項目にあります。
https://scrapbox.io/files/65c3d749a4fd5b0024c353b4.jpg
プロジェクト設定はそのまま閉じます。
ではMyCharacterを開いてイベントグラフを開きます。
https://scrapbox.io/files/65c3d81bc341210026466d7e.jpg
myjumpと検索して、先ほど作成したMyJumpというインプットノードを作成します。その後Jumpノード(キャラをジャンプさせるノード)を作成します。
https://scrapbox.io/files/65c3d857c341210026466e03.png
https://scrapbox.io/files/65c3d8690d7ce70024b5dc8a.jpg
これで一旦プレイすると、スペースキーでキャラクターがジャンプするようになりました。
https://scrapbox.io/files/65c3d89302d4ef00241c52cc.gif
作ったノードを解説
MyJumpというインプットをプロジェクト設定で作成したため、イベントグラフでMyJumpというノードが使用できます。MyJumpにスペースバーを割り当てたのでスペースバーによってジャンプするといった仕組みになっています。https://scrapbox.io/files/65c3d8c50824b100269f3ee0.jpg
②インプットに複数のボタンを割り当ててみよう
インプットで作成したMyJumpノードには複数のボタンを割り当てる事ができます。やってみましょう。
もう一つキーを追加してみます。プロジェクト設定のインプットをもう一度開いてMyJumpの隣のプラスボタンを押します。
https://scrapbox.io/files/65c3da15a7a26b0025b28952.png
Enterキーを割り当てます
https://scrapbox.io/files/65c3dbdaa4fd5b0024c35dd1.png
プレイしてみるとEnterキーでもスペースでもジャンプするようになりました。
https://scrapbox.io/files/65c3d89302d4ef00241c52cc.gif
インプットの利便性とは?三つの利点について
・1個の操作に複数のボタンを割り当てられる
インプットでは例えば「Jump」ボタンや「Attack」ボタンなどを作成して、それにボタンを複数個紐づける事ができます。例えばキャラをジャンプさせるにも、様々な機種に対応させる場合、押すボタンは異なってきます。PCだとスペースでジャンプ、PS5だとxボタンでジャンプのようにジャンプにも複数のボタンが必要になります。そんな時にインプットが役に立ち、ジャンプなどの操作に対して複数個ボタンを設定できるようになります。
https://scrapbox.io/files/65c3dc555e660600261095ed.png
・インプットを使用すると操作を一括変更でき、管理しやすい
またもう一つの利点として、例えば10体のキャラクターを作成したとしてインプットを使用せずに下の様にノードを組んだとします。
https://scrapbox.io/files/65c3d92eb5400000250de6a9.png
後からやっぱりスペースキーでのジャンプは辞めてEnterキーでキャラのジャンプをさせたいとなった時に10体とも全部ノードを変更しなければなりません。それは非常に手間になりますね。もしインプットを使用していればプロジェクト設定からMyJumpに割り当てているボタンをスペースからEnterキーに変更するだけで10体ともすぐに操作ボタンを変更する事ができます。
・何のボタンなのかわかりやすくなる
例えばインプットを使用せずにジャンプ操作に色々なボタンを割り当てたとしましょう↓少し何をする処理なのかわかり辛いですね。
https://scrapbox.io/files/65c3dcf9746c74002407d355.png
インプットを使用する事でシンプルにわかりやすくなります↓
https://scrapbox.io/files/65c3d4eb3dba500025077b63.png
こういった利点があるため、基本的にはキャラクター操作などはインプットを使用して実装する事をおすすめします。