Chapter2 タワーディフェンスの作成

Chapter2 タワーディフェンスの作成
ではさっそくタワーディフェンスの作成を開始します。「はじめに」のところにも記載しましたが、次のルールで作成
します。
・砲台を好きな位置に配置できる
・ただし、敵の移動経路には配置できない
・Wave 単位で敵が出現する
・敵は決まった経路で移動する
・敵が拠点にたどりついたらダメージを受ける
・3 回ダメージを受けたらゲームオーバー
・配置した砲台をアップグレードできる
手順通り進めていけば 2 ∼ 3 日程度で作れる規模ですので、頑張って作っていきましょう。
2.1 使用する素材のダウンロード
今回作成するミニゲームで使用する素材は
「GitHub」にアップしています。以下のページヘ進み、
右下にある「Download
ZIP」からダウンロードできます。
・https://github.com/syun77/GameMaker_TD
今回使用するデータの構成は次のようになっています。
Materials は素材フォルダです。今回の素材として使う画像ファイルがこのフォルダに含まれています。
Projects は完成プロジェクトです。完成したものがどのように動くのかを知りたい場合はこのプロジェクトを開き、実
行してみてください。
Extra と名前がつくフォルダは次の章で使用します。次の章では、この章で作成したゲームを改造していきます。
2.2 プロジェクトを作成する
まずはプロジェクトを作成します。プロジェクト名は「TD」とします。
2.3 ルームを作成する
リソースツリーから「Rooms」を右クリックして「Create Room」を選び、ルームを新規作成します。
settings タブを選択してルームのパラメータを設定します。
・Name: rm_main
・Width: 800
・Height: 480
・Speed: 60
今回のゲームでは「800 480」の横長のサイズとしました。
2.4 背景を作成する
背 景 画 像 は ダ ウ ン ロード し た 素 材 か ら「Materials/backgrounds/back.png」を 使 用 し ま す。 こ の ファイ ル を
GameMaker にドラッグ&ドロップします。
リソース追加ダイアログが表示されるので「Background」をクリックし、背景として登録します。背景のプロパティで
は名前を「bg_back」に変更して「OK」をクリックします。
次にルーム「rm_main」を開いて「backgraonds」タブを選択し、背景を「bg_back」に設定します。
2.5 敵の移動経路を作成する
GameMaker には「パスエディタ」という、オブジェクトの移動経路を作成するツールが搭載されています。これを使っ
て敵の移動経路を作成します。リソースツリーから「Paths」を右クリックして「Create Path」を選び、パスリソースを
追加します。
パスリソースの設定ウィンドウが表示されるので、名前を「pth_enemy」に変更しましょう。それと、背景に何も表示さ
れていないと移動経路が作りにくいので rm_main の内容を表示します。右上の「< Select Room Background >」を
クリックして「rm_main」を選択します。
パスエディタ内にルームの描画内容が表示されます。パスエディタのウィンドウが小さいので、右下をドラッグしてウィ
ンドウを広くしましょう。
パスエディタ上を左クリックして経路を作成します。クリックすると青い点が配置され、経路が作成されます。
ただ、このままだと開始点と終点がつながってしまいますので、
「Closed」のチェックを外しておきます。
パスは次のように設定しました。
左端の緑色の点が開始点で、右端の赤い点が終端、青色が途中の経路となります。設定できたら左上のチェックボタン
をクリックしてパスエディタを閉じます。
2.6 敵の作成
移動経路を作ったので、敵を作成します。まずは素材フォルダから敵画像である「Materials/sprites/enemy_strip2.
png」を GameMaker にドラッグ&ドロップします。
リソース追加のダイアログが表示されるので、
「Sprite」をクリックしてスプライトとして登録します。スプライトプロ
パティが表示されるので名前を「spr_enemy」に変更し、
「OK」をクリックして閉じます。
次に、リソースツリーの「Objects」を右クリックしてオブジェクトを作成します。
名前を「obj_enemy」とし、スプライトに「spr_enemy」を設定します。
続けて、Create イベントを作成します。アクションには「move > Paths > Start Path」を指定します。
・Applies to: Self
・path: pth_enemy
・speed: 1
・at end: stop
・relative: absolute
これはオブジェクトにパスリソースを設定して、
オブジェクトを動かすアクションとなります。パスリソースには「pth_
enemy」を指定し、速度は「1」
、relative を「absolute」にしています。この設定はパス「pth_enemy」の経路を速度「1」
で移動して終端までたどりつくと止まる(stop)設定です。「absolute」は絶対的という意味で、移動座標はパスの座標
(obj_enemy の座標を無視した絶対座標)で移動することとなります。
さらに、コードアクション(control > Code > Execute Code)を追加します。
▼obj_enemy > Create > 初期化
/// 初期化
// アニメーション速度を変更する
image_speed = 0.1;
アニメーション速度を変更しています。なお、本書で「コードを追加する」という記述があった場合は、この「コードアク
ション」を追加します。
2.7 敵の配置
では、敵を配置して動作を確認しましょう。rm_main を開いて、objects タブに obj_enemy があることを確認し、obj_
enemy をルーム内の左端の道に配置します。
敵を配置できたら実行してみます。敵がパスリソースに定義した経路通りに動くはずです。ただ、道から少し外れてい
ますね。これは敵の描画の基準となる座標が「左上」となっているためです。
spr_enemy を開いて「Center」ボタンをクリックします。これで、画像の「中心」を基準に描画するようになります。
敵の描画方法を修正してから実行すると、敵が正しく移動するようになりました。しかし、敵の画像の向きは左向きの
ままです。これを修正するには、obj_enemy を開いて Step イベント(Step > Step)を追加し、アクションにはコード
(control > Code > Execute Code)を追加して次のように記述します。
▼obj_enemy > Step > 更新
/// 更新
// 移動方向と画像の向きを合わせる
image_angle = direction;
実行して、敵が移動方向を向くことを確認します。