第5回はキャラクターに当たり判定をつけていきます。
(初心者講座を最初から見たい場合はこちら)
前回の最終状態では敵に当たっても何も起きず素通りしてしまっていましたので、これを調整していきます。
当たり判定をつけよう
前回の最終状態から画像のように変更します。
・15行目を追加(敵に当たり判定を設定)
・28行目を追加(赤毛の戦士と敵が当たった際の処理)

実行結果はこちら(動画です)
失敗ですね^^;
「SPHITSP」の解説
「SPHITSP」は当たり判定同士が接触した時に「1」が返ってくるものになります。
すなわち「SPHITSP(0,1)」は
1番に設定したキャラ(ガイコツ)の
当たり判定同士が接触したかどうか
を確認しています。
(接触していない状態だと「0」、接触した状態だと「1」という数値が返ってきます)
今回は「当たっている(1と等しい)場合は「MISS!」と表示させる」ように作成しました。
(PRINTで文字を表示したい場合は ” ” で囲います)
しかし、通り過ぎるまでずっと当たっている状態であるため、何度も「MISS!」が表示されてしまう結果となりました。
という事で当たった際の処理を以下のようにするため、28~30行目を調整してみましょう。
・当たった際に効果音を鳴らす

実行結果はこちら(動画です)
とりあえずはこんな感じでしょうか。
今回の調整で新しい事が2つ出てきました。
「BEEP」の解説
「BEEP」は効果音を鳴らす命令になります。
後ろの番号で鳴る効果音が変わります。
(参考:効果音などの探し方はこちら)
「ENDIF」の解説
こちらは「IF」とセットで使うもので、IFのTHEN以降の処理を次の行以降に複数行にわたって書くことができるものです。
1行に収めると
・わかりづらくなってしまう
・右側に行き過ぎて見づらくなってしまう
といった場合などは「ENDIF」を使う形が良いでしょう。
例として画像のような2つのIF文を用意しましたが、どちらも同じ内容です。

プログラムでは同じ動作でも色々な書き方ができる(何種類かやり方がある場合もある)というのを頭の片隅に入れておくと良いかもしれません。
攻撃の処理をつくろう
ここまでで敵に当たったらミスになる処理を作成しました。
これではやられるだけなで、こちらも剣を飛ばして攻撃できるようにしましょう。
まず剣を使えるようにする準備をします。
(まずは剣の表示として17~22行目を入力)

※剣の座標(SX,SY)は仮で設定しています
実行結果はこちら。

赤毛の戦士の少し前に剣が表示されていれば成功です。
次にAボタンを押したら剣が飛んでいくようにしたいと思います。
飛んでいかせる方法はキャラクターの移動と同じく「SX=SX+1」で良いです。
ではどこから飛ばせば良いでしょうか?
そう赤毛の戦士の位置からですね。
・39~44行目の追加(Aボタンが押された時の処理)

※画像は17行目からになっています
剣の初期位置を画面内にすると、ゲームが始まった瞬間にそこから飛んでいってしまうため、見えない画面外に設定します。
Aボタンを押した時に「赤毛の戦士の現在の座標」を「剣の座標」に入れることで、赤毛の戦士の位置から剣を発射できるようになります。
(40、41行目の内容)
実行結果はこちら(動画です)
まだ途中といった感じですね。
とりあえず気になる点としては以下でしょうか。
・剣の飛ぶスピードが遅い
・敵に当たっても何も起きない
では、調整してみましょう。
今までに見て来たやり方で気になる3点は修正できると思うので、実際にやってみましょう。
私が調整した内容としてはこちら。
43行目 剣の飛ぶ速度の調整
46~48行目 敵と剣が当たった時の処理を追加

実行結果はこちら(動画です)
色々と気になる所もありますが、今はこれで良しとしましょうw
第5回は以上となります。
初心者講座のトップに戻る場合はこちら
第5回終了時点のプログラムはこちら。


コメント