第3回:敵の出現
スクリプトを読み込ませる
今回は弾幕風にスクリプトを読み込ませます。
まずは「script」フォルダ内に適当なファイル名でテキストファイルを作りましょう。
必須部分は↓です。
#東方弾幕風
#Title[弾幕のタイトル]
#Text[説明]
#ScriptVersion[2]
script_enemy_main
{
}
これだけ書けば(一応)スクリプトとして認識されます。
これを改良して敵を出現させてみましょう。
敵の出現
敵を出現させるには、
HP
出現場所
自弾と自機に対する当たり判定
敵グラフィック
が必要です。
しかし、これらの情報は[script_enemy_main]あとの"{}"内に
直接書くわけではなく、@Initializeや@MainLoopというものを用意して、
その後の"{}"の中に書きます。
#東方弾幕風
#Title[敵の出現]
#Text[敵の出現]
#ScriptVersion[2]
script_enemy_main
{
@Initialize{
SetX(GetCenterX);
SetY(GetClipMinY+120);
SetLife(2000);
}
@MainLoop{
SetCollisionA(GetX, GetY, 24);
SetCollisionB(GetX, GetY, 24);
yield;
}
}
@Initializeはスクリプト開始時に1度だけ実行されます。
@MainLoopは敵HPが0になるまで毎フレーム実行されます。
SetX Y 敵の出現位置を設定します。
SetLife 敵のHPを設定します。
SetCollisionA B 自弾と自機との当たり判定を設定します。
GetX Y 敵のX,Y座標を取得します。
yield 今はまだ気にしなくてかまいません
さあ、このスクリプトを読み込んでみましょう。
しかし敵が表示されていません。ショットを撃ってみると敵のいる辺りで自弾が消え、
敵のHPが減っていくと思います。
要するにこのスクリプトには敵を表示する部分が無かったわけです。
そういうわけで敵表示部分を追加しましょう。
敵の表示
敵を表示するには、
敵画像をロードする
どの敵画像を操作するか設定する
設定した画像のどの部分を表示するかを決める
どこに表示するか設定する
必要があります。
#東方弾幕風
#Title[敵の出現]
#Text[敵の出現]
#ScriptVersion[2]
script_enemy_main
{
@Initialize{
SetX(GetCenterX);
SetY(GetClipMinY+120);
SetLife(2000);
LoadGraphic("script\img\ExRumia.png");
SetTexture("script\img\ExRumia.png");
SetGraphicRect(0, 0, 63, 63);
}
@MainLoop{
SetCollisionA(GetX, GetY, 24);
SetCollisionB(GetX, GetY, 24);
yield;
}
@DrawLoop{
DrawGraphic(GetX, GetY);
}
}
ややこしいのが増えました。
順番に説明していきましょう。
LoadGraphic 敵画像をロードします。
SetTexture どの敵画像を操作するか設定します。
SetGraphicRect どの部分を表示するか設定します。
DrawGraphic どこに表示するかを決めます
[LoadGraphic]では、どの画像を読み込むかというのを設定します。
th_dnh.exe の置いてあるフォルダからの相対パス(ファイルの位置)を使って、グラフィックファイルを指定します。
imgフォルダに入っているExルーミアの画像"script\img\ExRumia.png"を使っています。
パスの様に文字が沢山連なったものを文字列といいます。
文字列は数値と違って直接書く事はできず、" " で囲んで書きます。
しかし、#Title のような#が先頭につく命令においては、" " を書く必要はありません。
[SetTexture]では、どの画像を操作するのかを決めます。
[SetGraphicRect]では、画像のどの部分を表示するのかを設定します。
これは表示する領域(長方形)の左、上、右、下の座標を指定します。
これらの命令は何度も実行する必要はないので、@Initialize内に書きましょう。
画像を描画するには、[DrawGraphic]を使用します。
これは[@DrawLoop]内でのみ動作します。これを使うことで、ようやく画面に敵を表示させることが出来ます。
スクリプトの修正について
スクリプトを実行中に修正したときは、BackSpaceキーを押せば最初からやり直すことが出来ます。
実行していないときに修正した場合は、普通にスクリプトを選択すれば修正されたものが実行されます。
#Title,#Textを変更したときには、キャンセルボタンを1回押して現在のスクリプト一覧から抜ける必要があります。
Directoryの場合は、どこか適当なディレクトリに入って抜けるだけでかまいません。
次回は敵に弾を撃たせてみましょう。