この記事では、GameMakerの強力な入力ライブラリ「Input5」について、その導入と基本的な設定方法についてまとめていきます。
GameMakerで「コントローラー/キーボード」の入力切替の実装や管理を強力に助けてくれるライブラリなので、ぜひ一度触れてみてください。
Input5 とは?
Juju AdamsとAlyne Keithによる GameMaker 2022.5+ のための包括的なクロスプラットフォーム入力
https://www.jujuadams.com/Input/#/5.0/README
上記の引用文の通りですが、GameMaker用に作成された、様々なプラットフォームでの入力に対応可能な入力機能ライブラリです。
GameMaker標準の入力メソッドに近い文法と定義方法で、様々な入力に一元的にアクセスできるため、非常に便利です。
ざっくり言うと、コントローラやキーボードの切り替え・複数人での入力処理の作成や判定定義を助けてくれるようなものです(詳しい定義方法は後述)。
導入方法
基本的には公式ドキュメントの手順に準じますが、一応こちらの記事でも簡単に解説していきます。
アセットパッケージの入手
アセットは以下のgithubページから入手できます。
最新バージョンのAssetsタブ内最上部の「Input_5_X_X.yymps」をクリックすることでダウンロードが開始します。
GameMakerへのインポート
インポートが完了すると、「Input」ディレクトリがアセットブラウザのルートに配置されているはずです(下左写真)。
このままでは少し管理が煩雑になりますので、Inputディレクトリをドラッグして「拡張機能」ディレクトリの配下へ移動しておきましょう(下右写真)。
これで、GameMakerプロジェクトへInput5のインポートが完了し、使用する準備ができました。
動作確認とInput5の基本
Input5の導入が完了したら、まずは動作確認をしながら、基本的な仕組みを確認していきましょう。
動詞(Verbs)の定義を確認
Input5では、各入力を動詞(Verbs)という形で抽象化して管理します。
例) ・jump =キーボード:Space、ゲームパッド:Aボタン
・right =キーボード:→、ゲームパッド:十字キー右 など
こうすることで、複数のデバイスからの入力により直感的にアクセスでき、追加や変更の対応も容易になります。
アセットブラウザから、「__input_config_profiles_and_default_bindings()」を開きます。
([Input\Configuration – Please edit these scripts!]内にあります。)
バージョンによっては、名称が「__input_config_verbs_and_bindings」のものもあるようです。
ソースコードが以下の写真のようにバインド設定が記載されていればOKです。
これは、デフォルトで適用されている設定スクリプトで、
開いてみると、すでに動詞と、それに対応する入力キーが定義されていることが確認できます。
各「動詞」に対して、どのような入力を割り当てるかは、ここで設定されているものからわかるように、[input_binding_XXXX….] というメソッドを用いて設定していくことが可能です。
=公式ドキュメントでは、この設定作業を「binding : バインディング」と表現しています。
既に設定されているものの引数(GameMaker標準の入力変数)を編集するか、新たに追加編集してみましょう。(この記事では動作確認としてデフォルトの左右移動を試してみます。)
デフォルトの設定で入力判定動作を確認してみる
定義されている動詞と入力キーを確認できたところで、その動作を確認してみましょう。
今回は左右の移動をチェックするため、動詞「right」,「left」を使用してみます。
適当なスプライトをオブジェクトに設定し、ステップイベント内に以下のスクリプトを描いてみます。
→Input5での入力を受け付けるには、設定した動詞を引数に、input_check()を呼び出します。
if (input_check("right")) x += 5;
if (input_check("left")) x -= 5;
ここで用いるinput_check()は、Input5で用意されている関数で、動詞名を引数にそれに対応する入力状況を取得します。
*input_check系統の関数は、GameMaker標準のkeyboard_checkを模した形式で定義されています。
スクリプトを設定したオブジェクトをルームに配置し、実行してみましょう。
キーボードの左右矢印キーまたはゲームパッドの左右で、オブジェクトが左右に動くことが確認できます。
この時、デバッグメッセージを確認してみると、ゲームパッド・キーボードそれぞれの入力があったときに、それに対応するプロファイルが使用されている旨の出力が確認できます。
このプロファイル情報はコードからアクセスできるので、どのプレイヤーが現在どの入力方法でアクセスしているかも判定できます。
終わりに
このように、Input5を用いることで、動詞「right」,「left」としての判定処理を書くだけで、コントローラーとキーボード両方の入力に対応できていることがわかります。
また、バインディングを行っている設定ファイルから動詞に対応する入力を変更するだけで各所の判定部分を編集する必要がなくなり、キーコンフィグの実装や入力処理の書き直しや管理が非常に簡便になります。
この記事で触れたのは基本的な要素のみで、Input5には複数人での入力やより複雑な入力処理を実装するための機能が数多く組み込まれています。
詳細は公式ドキュメントを参照しながら、是非使用してみてください。(以下、スタートガイドがおすすめです。)
コメント