2020 ソフトウェア設計及び演習用の班Wiki

20::gr03::プレイ画面::ステージ作成方法

ステージ作成方法及び説明

全オブジェクトの注意点

宣言時、変数の前にvarやletがついていない変数は、グローバル変数(全プログラムから参照可能)になる。
stage[], thiefArray[], policeArray[], goal,はグローバル変数。
作成したオブジェクトは、囚人以外全て、stage[]に格納すること。
stage[]に格納したオブジェクトのみ当たり判定を持つ。
囚人は格納しないよう注意。
壁の大きさは、最低40にすること。

player

let player = new Player(0, 0);

与えられた座標にplayerを生成します。

通常ブロック(動かない壁)

let block01 = new Block(0, 600, 400, 40, BLOCK01_IMG);

例えばこのように書くと、座標(0, 600)に、大きさ(400, 40)のブロックを生成します。
BLOCK01_IMGはtextureであり、すでにロード済みの画像が入っているので、こいつを与えます。
違う画像をtextureにしたい場合は、ここを変えます。
このブロックは、playerと動く壁と刑務官に対して当たり判定を持っています。

動く壁

let move01 = new MoveWall(350, 400, 40, 200, 'vertical', MOVEBLOCK01_IMG);

例えばこのように書くと、座標(350, 400)に、大きさ(40, 200)の動く壁を生成します。
'vertical'という文字列を与えると、縦に動かせる壁が生成できます。
'side'という文字列を与えると、横に動かせる壁が生成できます。
MOVEBLOCK01_IMGには、ロード済みの使いたい画像のリンクを与える必要があります。
マウスのフリックで動かせます。
囚人以外のオブジェクトに当たり判定を持っているので、動かす先にオブジェクトがあると動かせません。

ゴール

goal = new Block(1160, 400, 40, 240, GOAL_IMG);

中身は通常ブロックと一緒ですが、名前をgoalにする必要があります。
囚人を全員回収できていると、接触したときクリアになります。
回収していないと何も起こりません。

囚人

let thief01 = new Thief(650, 174);
let thief02 = new Thief(20, 100);
thiefArray = [thief01, thief02];

例えば、上記だと引数として与えた2つの座標に、囚人がそれぞれ配置されます。
上記のように、thiefArrayに囚人を配列として格納する必要があります。
別の場所で描かれたクラスで、thiefArrayを参照したかったのでグローバル変数にしています。
goalするには、囚人を全員回収する必要があります。

刑務官

let police01 = new Police(900, 500, 0.5, 200);
let police01 = new Police(200, 300, 0.5, 200);
policeArray = [police01, police02];

例えば、上記だと引数として与えた2つの座標(900, 500 と 200, 300)に、刑務官がそれぞれ配置されます。
0.5のところは速度で、大きい値ほど動きが早くなります。
200のところはplayerを見つける半径で、見つけるとplayerを2倍速で追いかけます。
値を大きくすると、見つける範囲が大きくなります。
ジャンプはしないし、穴にも落ちるので、クリボーとほぼ一緒です。
playerは刑務官と接触してしまうとGAMEOVERになります。
上記のように、policeArrayに刑務官を配列として格納する必要があります。


最終更新日:2020/06/16 14:17:50