デフォルトの機能を使ったキーコンフィグ
プレイヤーの動作を設定
1番簡単な方法です。まず自機になるオブジェクトを「8方向」等の操作可能なものに設定します。
キーボード設定
アプリケーションプロパティのランタイムオプションのタブをクリックし「規定のコントロール」の編集ボタンを押します。
1の列がプレイヤー1のコンフィグです。キーボードの行の×印をクリックします。
デフォルトではshiftキーがボタン①としてセットされていますのでZキー等に変更しましょう。
(※shiftキーは5回連続で押すとwindowsが文句を言ってくる環境が多いので避けましょう)
ジョイスティック設定
キーボードを設定できたらジョイスティック1の行をクリックして、プレイヤー1のコントロールをジョイスティック1に設定しましょう。
- プレイヤー1にはジョイスティック1にしましょう。
(もしプレイヤー4まで4つのコントローラを設定する場合は通常こんな感じになります)
イベントエディタでは「Zキーを押したら…」などとは書かず「ボタン1を押したら…」と書きます。
ソフト起動
ソフトを起動してみてください。
・ジョイスティックが接続されていれば、ジョイスティックで操作が
・ジョイスティックが接続されていなければ、自動でキーボードで操作が(コンフィグで設定したキーで)
可能になります。
ビルドした実行ファイルでも同様になるようです。
またソフト起動中にユーザーがファイルメニュー→プレイヤーを選ぶとキーコンフィグ画面が出てきます。
※ただしユーザーがここのコンフィグで編集しても編集内容は保存されないようです。
(もし保存する方法があれば追記、修正願います)
また、この方法だとキーボードのコンフィグは出来てもジョイスティックの
「ショットボタンをボタン1じゃなくてボタン2に変更したいのに~」といったニーズに対応出来ません。
そこで自作です!
キーコンフィグを自作する
駄目な例
これをみて頭が痛くなるなら君は正常だ!
↑良い子は絶対真似しないこと!!
- (※なんでフラグに名前が付いてるの?というひとは「内部フラグに無理矢理名前を付ける」を参照)
使用ボタンが3つだからこの程度の量で済んでいるが、8つとかになったら恐ろしいことになる。
例では「硬直中」と「喰らい中」のフラグを条件に入れているが、実際のゲームではもっと沢山の条件を盛り込むことも有るだろう。
イベント部分を変更する度に全く同じ処理を貼り付けまくらなければならない。
当然コピペ忘れ、ミスが発生したらアウト。
重複コードだらけでメンテナンス性が下がりバグの温床になる。
ちょっとマシな例
OR(論理)で条件部を合成すればイベント部をひとつに纏めることが出来、多少マシになります。
条件部やボタンが増えたらウンザリすることには変わりありませんが。
↑改良版 ちょっとだけマシだけど条件部が煩雑なことには変りない
基本的な考え方
「もし、punc_buttonボタンが押されていたら パンチする」と記述出来たら楽に実現出来ます。
でもMMF2では通常、数式でキーやボタンを指定出来ません。
- ~~~こんな風に書きたい~~~~~~~~~~~~~~~~
punch_button ←代入 iniファイルとかから読み込んだキーコード
if(punch_buttonが真){ パンチを実行 }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
プログラミング言語では常套手段(たぶん)だと思いますが、残念ながらこんな風には書けないでのこれに近い手段を考えます。
だいぶマシな例
パッと見、駄目な例とたいして変わらないジャン!とか言わないで下さい。かなり違います。
コンフィグ読み取り部分は読み取りだけに専念してパンチボタンを押したかどうかのフラグの切替だけを行っています。
そして実際のパンチアクション部分はボタン押下のチェックの代わりにそのフラグの有無をチェックすることにより行っています。
役割を完全に分担することによってかなりメンテナンス性が上がります。
- コンフィグ読み取り部はおそらく1度書いてしまえば弄る必要もなくなるでしょう。
これでコンフィグ読み取り部分をもっとスマートに書けたらいいのになぁ…数式で指定出来さえすれば…
そこでjoypad object とControl Xです。
エクステンションを使ったキーコンフィグ
joypad object とControl Xを使えば数式でボタンやキーの指定が出来、非常にスマートに書けます。
まさに
- ~~~こんな風に書きたい~~~~~~~~~~~~~~~~
punch_button ←代入 iniファイルとかから読み込んだキーコード
if(punch_buttonが真){ パンチを実行 }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
な書き方が出来ます。
上記のキーコンフィグの概念を理解した上でこれを使ってみると、何をしようとしていて数式で指定出来ると何が便利なのか?
ありがたみが分かると思います。
- サンプル:キーコンフィグ可能入力システム.mfa
関連サイト
- MMF2標準プレイヤーコントロール用キーコンフィグウィジェット
標準のプレイヤーコントロールを用いて入力イベントを組んでいるゲームにキーコンフィグ機能を追加することが出来ます。
コメント
- 更新:Key ObjectとJoystick 2を使用したサンプルを追加 -- 2012-01-14 (土) 16:00:18
- 更新:キーコンフィグ可能な入力システム.zipを更新 -- 2012-01-15 (日) 03:37:04
- 更新:「MMF2標準プレイヤーコントロール用キーコンフィグウィジェット」のリンクを追加 -- 2012-05-19 (土) 22:17:42