はじめに
このように、タイルマップで敵を出現させたい場所をタイルマップで設定して、ゲーム開始時に敵をまとめて出現させる方法です。
このプログラムが作れると、マップの創作だけに集中することができます。
以下の手順で行います。
- 今回の目標を明確にする
- 敵を表示したいタイルマップを設定
- 敵の配列を作成
- 敵を1人ずつタイルにランダム配置
- 敵を1人配置するたびに配置先のタイルを消す
完成したプログラムがこちらになります。以下で説明します。
今回の目標を明確にする
まず、今回は「狙ったタイルに敵を出す」が目標です。
サンプルでは「木」のタイルに「おばけ」のスプライトを表示するように考えました。
- タイルの個数を把握して
- 個数に合わせて敵を格納するスプライトの配列を作成し
- 敵を1人ずつ配置する
といった手順になります。
敵を表示したいタイルマップを設定
今回の大きな目標はこれです。
タイルマップを編集して、関数を1つ呼び出すだけで敵を配置できるようにプログラムを考えます。
敵の配列を作成
敵を格納するための配列を作成します。
空の配列を作成し、「木」の個数分だけ「配列の最後にスプライトを追加」を繰り返します。
この際に「配列の長さ」を調べることができるので、関数に引数として与えています。
敵を1人ずつタイルにランダム配置
「カウンターを0~( )に変えて繰り返す」を使用します。
この時に、()には「木」の個数が入りそうですが、0を最初の数値としているため、「木の個数-1」を入れる必要があります。
※ここに気づくのに一番時間がかかりました。
敵を1人配置するたびに配置先のタイルを消す
スプライトの配置は「ランダム」なので、2人目以降の敵を配置するときに、1人目を配置したタイルが残ったままだとダブって配置されてしまうことがあります。
したがって、一度配置したタイルは消去しておく必要があります。
配置した敵の場所をタイル座標に変換するために
「座標を16で割る」(整数の÷)
という作業をします。
これにより、
- 敵を配置する
- 配置先の座標を確認する
- その座標にあるタイルを消去する
という手順ができるようになりました。
あとは敵の数だけ繰り返せば完了です。
おわりに
いかがだったでしょうか。
自分ではこのような機能があれば作成が捗るのにな~という部分を解説してみました。
参考になればうれしいです。
(追記)敵ではなく、コインを配置する方法もアップしました。
コメント
[…] 以前「MakeCodeArcadeで特定タイルに敵を配置する方法」で解説した方法を改良したものです。こちらも参照していただけるとわかりやすいと思います。 […]