見出し画像

[はじめてゲームプログラミング] 1発で壊れない敵の作り方

任天堂Switchの「ナビつき! つくってわかる はじめてゲームプログラミング」
1発で壊れない敵を作り方についての説明です。

敵に球が1発当たると敵を壊す処理は標準機能として備わっていますが、数回当てないと敵が壊れない処理については複数の処理を組み合わせないと実現できないので、整理していきます。


攻撃用の球には、こわす設定をせず、モノをこわすノードンで敵を壊す

処理の仕組みを簡単に説明しますと、攻撃用の球に「こわす」のふるまいをつけず、敵に球が数回当たったら、モノをこわすノードンを発動させ、敵を壊すという仕組みとなります。

攻撃用の球に「こわす」を設定してしまうと、1発で敵が壊れてしまい、また敵に「こわれる」の設定をしないと、モノをこわすノードンを発動させても壊れないので、この設定が要注意です。

処理の流れについて

上記の図を元にステップ毎に解説していきます。
本来はヒトノードンなどのキャラクターを操作し、敵のエイリアンを球で撃つのですが、図と説明を簡略化するためその辺りは省略しています。

A.ボタンノードン(球を発射させる用のボタン)

<設定値>
設定値:Aボタン

B.モノを発射ノードン(攻撃用の球)

<設定値>
みえる:ON
当たる:ON
動く:ON
こわれる:ON
こわす:OFF 

<接続ポート>
「A.ボタンノードン」の出力ポートと、このノードンの発射ポートに接続

こわすONにすると敵が1発で壊れてしまうので、こわすOFFにする

ふるまいの「こわす」はチェックしないようにしましょう。これを設定してしまうと、1発で敵が壊れてしまうので。

では、どのようにして敵を壊すかというと、「こわすモノノードン」を使用し、一定の条件を満たしたら敵を壊すようにプログラムすることで敵を壊すことができます。詳細は後半で。

C.エイリアン(敵)

<設定値>
みえる:ON
当たる:ON
動く:ON
こわれる:ON
こわす:ON

モノをこわすノードンで壊したい場合は、こわれるONに設定する

後半の処理に出てくる「H.モノをこわすノードン」でエイリアンを壊したいため、「こわれる」をONに設定します。
「こわれる」をONにすると、1発で壊れてしまうのでは?と思いますが、攻撃用の球はこわすOFFになっているので、攻撃用の球がエイリアンにあたってもエイリアンは壊れません。

D.さわっているセンサーノードン(敵に球が当たったかを判定)

<設定値>
ふるまい:見えるOFF
出力するタイミング:さわったしゅんかん
何をチェックする:球

<接続ポート>
「C.エイリアン」と連結ポートで連結。

このノードンの役割は、球が当たったら、球を壊す処理と当たった数をカウントする処理を発動させること

この設定で、「C.エイリアン」に「球」が当たると、このノードンが発動するようになります。この処理は、球が当たったタイミングで、球を壊す処理と、何回当たったかをカウントする処理の発動きっかけとしての役割を持ちます。

センサーノードンを反応させたい場合はエイリアンに重ねるようなイメージで配置する

エイリアンに当たったタイミングでセンサーを反応させたい場合は、センサーノードンをエイリアンに重ねるようなイメージで設定する必要があります。

そしてセンサーに反応させるため、センサーノードンのサイズはエイリアンのサイズと同じか、それ以上大きいサイズに設定する必要があります。センサーノードンのサイズが小さいとセンサーに当てることができないためです。

テスト用にふるまい見えるONにすると、透明の枠のみのセンサーノードンエリアが表示されるのでどこにセンサーノードンが配置されているかのイメージがしやすいかと思います。

エイリアンにさわっているセンサーノードンを設定する手順

センサーノードンの設定手順ですが、まず「D.さわっているセンサーノードン」のサイズを「C.エイリアン」以上のサイズに設定します。

次にエイリアンにセンサーを重ねていきます。
やり方は「C.エイリアン」と「D.さわっているセンサーノードン」を連結ポートで連結させると、両方の配置エリアが異なっていても重なります。
連結ポートなしでも重ねることができ、自力で「C.エイリアン」と「D.さわっているセンサーノードン」を重ねれば、結果的に重なります。

E.カウンター(敵に何回球を当てたかをカウント)

5回球を当てたら、敵を壊す処理に使う

例として、5回球を当てたら、敵を壊す処理とします。
初期値を5として、球を当てる毎にマイナス1していく処理となります。

<設定値>
スタートのときのカウント:5
モード:はんい制限
カウントはんい:0〜5
カウントするタイミング:0から変わったしゅんかん

<接続ポート>
「D.さわっているセンサーノードン」の出力ポートと、このノードンの「減らす」ポートを接続。

カウンターノードンのおさらいは以下

F.定数(当たり回数判定用)

<設定値>
0

G.くらべるノードン(敵に球が5回当たったかを判定)

<設定値>
設定値:=

<接続ポート>
「E.カウンター」と「F.定数」を入力ポートに接続
このノードンの出力ポートと「H.モノをこわすノードン」に接続

「E.カウンター」の値と「F.定数」の0が同じ値となったら、このノードンの出力値が1となり、「H.モノをこわすノードン」を発動させ、エイリアンを壊します。

H.モノをこわすノードン(敵を壊す)

<設定値>
ふるまい:みえるOFF
何をこわす?:エイリアン

<接続ポート>
「C.エイリアン」と、このノードンを連結ポートで連結

このノードンは敵と連結しないと、敵が壊れないので忘れずに連結するようにしましょう。

おわりに

以上のプログラムで、敵に5回球を当てると敵のエイリアンを壊すことができるかと思います!

実際にやってみると若干設定が間違っており上手く動かないことがある場合もありますが、その場合は根気強く設定値を見直してみてください。私もよく設定をミスって長々とハマってしまいます。。プログラミングは粘り強く試すことが大切です!

特に手がかりがない場合は、一旦以下を確認してみて下さい

・攻撃用の球とエイリアンの、ふるまいの「こわす」「こわれる」の設定
・連結ポート、入力出力の接続ポートが正しく接続されているか?
・さわっているセンサーノードンなどのふるまいの「みえる」ONにして確認する

ここまで読んで頂きありがとうございます!この記事がプログラムを作る上で参考になれば嬉しいです!

この記事が気に入ったらサポートをしてみませんか?