それでは、今回はWidgetブループリントのTickに繋がっている、コントローラ入力を受け取ったときの処理を解説していきます。
左からPlayer01の入力処理、Player02の入力処理、Player01入力時の効果音処理、Player02入力時の効果音処理、Player01とPlayer02が同じキャラクターだった場合の変数管理を行う関数が並んでいます。
では、Player01の入力処理を説明します。
以下の画像は全体像になりますが、赤枠上部はゲーム中のポーズ処理となるため、今回は赤枠内の説明となります。
まず最初に、論理型のInput Possible For P01で入力を許可するか確認をしています。
Input Possible For P01がTrueであれば、処理を継続し、論理型のBegin Battleでバトル中か確認しています。今回はFalse側の処理を説明します。
ではコントローラからの入力の受け取り方について説明します。
上図はキーボードとコントローラの入力をセットで処理しており、上から、「スペースキーとオプションボタン」、「上矢印キーと方向キー上」、「下矢印キーと方向キー下」、「左矢印キーと方向キー左」、「右矢印キーと方向キー右」、「Enterキーと○ボタン」、「Backspaceキーと☓ボタン」の組み合わせで、Was Input key Just Releaseというノードを使用して、該当キーが押されて放した時にTrueが出力されます。
この組み合わせを論理型のORで接続して、どちらかが押されて放した時に処理するようにしています。
それでは各キーとボタンの処理を説明しますが、「スペースキーとオプションボタン」についてはバトル中の処理となりますので、別記事で説明します。
上の図は「上矢印キーと方向キー上」が押されたときの処理になりますが、メニュー画面で上下に選択肢がある場合に使用します。
“Input Value V”は上下の選択肢に対し、アクティブなカーソルがどこにいるかを示しており、上キーが入力されると“Input Value V”を「+1」する処理を行います。
ただし、一番上の選択肢がアクティブの場合は“Input Vallue V”の値が「0」になるように設定していますので、 「0」以上であれば、“Input Vallue V”に「0」を代入、 「0」 未満の場合は、「+1」した値を代入する処理としています。
次に、「下矢印キーと方向キー下」では、下キーが入力されると“Input Value V”を「-1」する処理を行います。
モードセレクト画面とバトル終了時の画面では上下に選択肢が2つしかないので、“Input Value V”の値を「-1」まで代入する処理、ポーズ画面では、上下に選択肢が3つありますので、“Input Value V”の値を「-2」まで代入する処理を行っています。
次に、「左矢印キーと方向キー左」はメニュー画面で、左右に選択肢がある場合に使用され、アクティブカーソルが一番左に来た時に「0」になるよう、左キーが入力されると、“Input Value H”の値を「-1」する処理を行います。
次に、「右矢印キーと方向キー右」では、右キーが入力されると“Input Value H”を「+1」する処理を行います。
ステージセレクト画面では左右に選択肢が5つあるので、“Input Value H”の値を「+4」まで代入する処理、それ以外のキャラクターセレクト画面では、左右に選択肢が8つありますので、“Input Value H”の値を「+7」まで代入する処理を行っています。
最後に、「Enterキーと○ボタン」、「Backspaceキーと☓ボタン」の処理となりますが、これは選択確定とキャンセル確定のフラグをtrueにする処理を行っています。
これで、メニュー画面時のPlayer01の入力処理は完了です。
次にPlayer02の入力処理ですが、下図のようにキーの入力を参照しているコントローラが違うだけでノードの処理は、Player01と同一です。
では次にメニュー画面で各キーを入力した際の効果音の処理を説明します。
まずは、”Input Possible for P01”で入力可能か判断した後、”Begin Title”でタイトル画面か確認しています。
タイトル画面であれば○ボタンを押した時にタイトル画面専用の効果音を鳴らします。
サウンドボリュームは”Sound Volume Fx”という浮動小数点型の変数であらかじめ値を指定しています。
次にタイトル画面ではないときで、かつ セレクト モード、セレクトキャラクター、 セレクト ステージ、ポーズメニュー、ゲーム終了時のメニューであれば、上下左右キーや○ボタン、☓ボタンが入力されたときの効果音を指定して、鳴らします。
これでPlayer01の効果音処理は完了です。Player02も同様に、キーの入力参照先を”Controller Ref”から”Controller Ref02”に変更するだけで完了します。
残るは、Player01とPlayer02が同じキャラクターだった場合の変数管理を行う関数についてです。
Player01のBP_Common_controllerからPlayer01とPlayer02のキャラクター番号を参照し、同じだったら、”Change Color of P02”にTrueを代入します。
この変数はキャラクタブループリントで参照され、Trueだったら、Player02のキャラクタをスポーンする時に、キャラクターメッシュの色が変更されます。
今回の説明は以上です。
次回は、セレクトモードの処理を説明します。
コメントを残す