【ナビつき! つくってわかる はじめてゲームプログラミング】パンチとキックを使い分けてゲーム作り 解説
なんちゃってリズムゲーム「ゲームID: G 000 FBY 20D」の作りを解説しています。
Aボタンを押すと3,Bボタンを押すと4を出力することで、パンチとキックがだせるようになりました。同じようにXボタンで5,Yボタンで2を出力するようにすると、やったぜやターンもおこなえるようになります。
パンチとキックを別ボタンで行う
さっそくゲーム画面を配置し、ヒトを1体置きます。
このヒトにパンチとキックをさせます。
わかりやすいように、右向きにしておきましょう。
ヒトのアクションは4種類あるのですが、設定できるのは1つだけです。
アクションポートに1がくると設定されたアクションを行います。
しかし、ウラワザとして2,3,4,5がアクションポートにくると、対応するアクションを行うようになっています。
それでは、Aボタンでパンチ,Bボタンでキックを行うようにしてみましょう。
「ボタンをおしたら」のノードンは指定のボタンを押すと1、押していないと0を出力します。これをボタンを押すと3や4を出力するようにすれば良いわけです。
この変更には「けいさん」ノードンで定数と掛け算を行うようにしましょう。
掛ける定数を3にすれば、押しているタイミングで3が出力されます。
3をアクションに繋げばパンチが出せます。
Aボタンを押すと3,Bボタンを押すと4を出力することで、パンチとキックがだせるようになりました。同じようにXボタンで5,Yボタンで2を出力するようにすると、やったぜやターンもおこなえるようになります。
ボタンごとに別の場所のモノを壊す
では、それぞれのアクションの効果を設定します。
「モノをこわす」ノードンをいくつか用意し、「けいさん」ノードンからの出力をつなぎましょう。これで、ボタンに対応して別々の場所のモノをこわせるようになりました。
これで、パンチやキックなどのアクションの使い分けができました。
せっかくなので、このままなにかゲームを作ってみましょう。
画面の右から球が飛んできて、対応するアクションで球を壊すというゲームを作ってみます。
「モノをこわす」ノードンを縦1列にならべ、目印に直方体を少し奥に置きます。
そして、「モノを発射(10コ)」ノードンを画面外に置いて、球を発射させましょう。
球の設定は「見える」「こわれる」「うごく」です。
そして、再生すると……見事キックで飛んでくる球を破壊できるようになっています。
「モノを発射(10コ)」ノードンを縦に並べると、高さごとに別のアクションで破壊するようになります。
ところが、ここで一つ問題が発覚します。
ボタンを同時に押すことで、すべての高さの球が破壊出来てしまいます。
このままでは高さに合わせてボタンを押さなくても、すべてのボタンを押し続けるだけですべての球が破壊出来てしまいます。
ボタンを同時に押している時には、破壊やアクションを行わないようにしないといけません。
ビットフラグをつかってボタン同時押しの抑制
ボタンを同時におしていないかどうかには、ビットフラグを使います。
ビットフラグというのは二進数でそれぞれの桁をフラグとして使う考え方です。
二進数について軽く説明します。
普段、我々が使っている数の数え方は10進数です。
数が10になると次の桁になります。
対して二進数は、数が2になると次の桁になります。
1,2,4,8,16と2倍ごとに桁があがります。
aボタンに1,bボタンに2,xボタンに4,yボタンに8を割り振っておき、すべての出力を足します。
この足し算は二進数では桁の繰り上がりがないため、対応桁が1かどうかを見るだけでボタンが押されているかどうかがわかります。
つまり、1ならaボタン、2ならbボタン、3ならaボタンとbボタンが押されていると分かるわけです。
では、ノードンを配置していきましょう。
「ボタンをおしたら」ノードンと掛け算を行っている定数を1,2,4,8に設定します。
これで、ボタンが単体で押されているかの判定は完成です。
あとは、「くらべる」ノードンからの出力を掛け算で2,3,4,5にすればアクション設定も完了です。
スコア表示
入力部分ができたので、スコアでもつけてみましょう。
「モノがこわれたしゅんかん」ノードンで球の破壊を検出し、「カウンター」ノードンで数えます。
「カウンター」ノードンの数字を画面に表示すればスコアの完成です。
球の発射タイミング設定
次は「モノを発射(10コ)」ノードンの発射タイミングの処理を作りましょう。
現在はなにも設定していないので、1秒ごとにすべての「モノを発射」ノードンが動いています。
これを、一定時間ごとにランダムなノードンが発射を行うようにしていきます。
まずは、発射間隔を縮めましょう。0.5秒くらいに設定しておきます。
そして、「定数」ノードン、「タイマー」ノードン、「ランダム」ノードンの順に繋げます。
「ランダム」ノードンは1~6を出力するように設定し、「くらべる」ノードンを使って1の時に下、2の時に中、3の時に上の「モノを発射」ノードンが球を発射するようにつなぎます。
これで、「ランダム」ノードンの出力が1,2,3の時に別の高さから球が発射され、4,5,6の時にはなにも発射されないようになります。
リズムゲーム風にしてみる
後は「タイマー」と「カウンター」を使って、数字をカウントダウンするようにし、その「カウンター」が0になればリトライするように作れば、ゲーム部分は完成です。
ですが、音がないと味気ないので、BGMと効果音をつけます。
「モノを発射」ノードンのその他設定で、当たった/こわれた時に音を鳴らさないように設定します。
かわりに、「さわっているセンサー」を「モノをこわす」ノードンと同じ位置に置き、球がさわっている時に対応するボタンが押されたなら効果音を鳴らすようにします。
これで発射された球が壊れた時に、通常の効果音ではなく、設定した効果音がなるようになりました。
そして適当なBGMを鳴らします。
球発射に使っている「タイマー」をBGMの1拍くらいの秒数に設定し、「モノを発射」ノードンと「モノをこわす」の距離も1拍で発射された球が届くくらいの距離に調整すれば、なんちゃってリズムゲームの完成です。