最後に押されたボタンを記憶する方法【はじめてゲームプログラミング】

タイトルの通り「最後に押されたボタンを記憶する」方法を紹介していきます。

 

用意するもの

  • 任意のボタンノードン
  • フラグノードン×ボタンの数分

 

とりあえず入力

f:id:sadala:20210811153559p:plain

適当にボタンノードンをいくつか配置します。

なんでもいいですが、ガレージ上で確認できるボタン(LRABなど)がおすすめです。ショートカットがあると確認しづらいので。

動作確認が終わったら使いたいボタンに変更するのを忘れずに。

記憶するといったら「フラグノードン」

f:id:sadala:20210811153817p:plain

それぞれのボタンとフラグノードンが対応するように、呼び出したボタンノードンの数だけフラグノードンを呼び出します。

フラグノードンに個別の名前はありませんが「Aボタン用のフラグノードン」みたいに思っていただければ。

ボタンの出力に対応するフラグをオンにする

f:id:sadala:20210811153834p:plain

ボタンノードンの出力を対応したフラグノードンのオンのポートにつなぎます。

「Aボタンノードンの出力」から「Aボタン用のフラグノードンのオンポート」のような感じです。

これでボタンを押したらフラグが記憶するようになりました。

それぞれ必要な数用意しましょう。

ゲーム画面で確認

今回は最後に押されたボタンを記憶するだけなので、ゲーム画面ではなにも起きません。

しかし、フラグノードンが機能していることを確認しておきたいですし、このあと機能を追加した時にも確認作業が必要でしょう。

というわけで、今回はモノとスライドれんけつを使って確認していきます。

f:id:sadala:20210811153906p:plain

モノ1を「みえない」「あたらない」「動かない」に設定。スライドれんけつの下側にれんけつ。

モノ2を「みえる」「動く」「色(任意)を指定」に設定。スライドれんけつの上側にれんけつ。色でボタンを区別するので被らないように決めてください。

 

最後に「フラグノードンの出力」を「スライドれんけつノードンの入力」につないで準備完了。

ゲームを開始して確認します。

現状だとボタンを押すと一度だけモノが動くはずです。

f:id:sadala:20210811154037p:plain

 

ボタンが押されたら他のフラグをリセットする 

f:id:sadala:20210811154223p:plain

 ボタンノードンの出力を、対応させていない残りのフラグノードンのリセットのポートにつなぎます。

f:id:sadala:20210811154258p:plain

用意したボタンノードンがA,B,X,Yの4つなら、Aボタンノードンの出力をBとXとYボタン用のフラグノードンのリセットポートにつなぎ、残りのボタンの出力に関しても同じようにつなぎます。

 

これで「最後に押されたボタンを記憶する」ことができるようになりました。

f:id:sadala:20210811154321p:plain

アレンジ

f:id:sadala:20210811154345p:plain

それぞれのボタンからリセットへ信号を送らずに1つのボタンノードンでリセットする

ボタンノードンを1つ追加して、設定から用意したボタン全てに反応するようにしたら、すべてのフラグノードンのリセットポートにつなぎます。

タイマーノードンで遅延してリセットとオンのタイミングをずらす

ボタンノードンからフラグノードンのオンポートへの間にタイマーノードンを追加します。

ボタンが押されてから反応するまでに遅延を発生させたり、何かボタンが押されたらすべてのフラグをリセットすることで、再度選択しているように見せたりと演出を加えることができます。

ボタンが押されたことがわかるような効果音を鳴らすとよりそれっぽくなります。

最後に注意

ここに書いてあるままだと、ボタンの同時押しなどによって意図しない挙動をする場合があります。

いわゆるバグとか仕様上の欠陥というやつです。

 

簡単に修正するいい方法が思いつきませんでした。

まあなんにせよ使えるノードンの数が限られているので、ある程度目を瞑ることをおすすめします。