格闘ゲームの作り方・プログラムの解説 その2

それでは、今回は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のキャラクタをスポーンする時に、キャラクターメッシュの色が変更されます。

今回の説明は以上です。

次回は、セレクトモードの処理を説明します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください