シューティングゲーム Circulatorに弾幕のパターンを追加
先日公開したシューティングゲーム
Circulatorのスクリプトをバージョンアップしました。弾幕のパターンを三つに増やした他、自機や弾丸の画像サイズを変更するなど細かな調整をしています。
⇒
特攻シューティングゲーム Circulator
※変化がないときはキャッシュが残っているかもしれないので、リロードしてください
変更点
・自機の画像サイズをより小さく変更。
32pxから
24pxに。また当たり判定も自機中心から半径
6pxに縮小し、弾に当たりにくくしました。
・弾丸をより小さく変更。(
12pxから
8pxに)また、弾幕パターンによって弾丸を色分けしました。
・弾幕のパターンを三種類に。360度ランダムに撒き散らす従来のパターンと高速弾で自機を狙い撃ちするパターン、そして広範囲にばら撒くタイプです。
・
enchant.jsのプラグイン
nineleap.enchant.jsを使用し、ゲームがすぐに始まらないように制御。
弾幕パターンの実装は、
patternオブジェクトに登録しておいた弾幕パターンを条件に応じて呼び出す形にしていて、各パターンとも弾丸を発射する
fireメソッドを持っています。いわゆるポリモーフィズムの応用で、これによって弾幕パターンと発射条件(タイミングなど)のスクリプトを切り離すことができ、コードの見通しがよくなっています。
//distは自機と敵機のあいだの距離(px)
if (dist > 180) {
//自機と敵機の距離が十分開いていたら拡散弾のパターン
barrageType = pattern.spread;
} else {
/* 100フレームのうち、70フレーム分がランダムパターン。続く15フレーム分が狙い撃ちパターン。
* 敵機に絶え間なく攻撃させると、特攻するスキがないので、残る15フレーム分は何もさせない。
* プレイヤーにとってはこの15フレームが特攻するチャンスとなる
*/
if (this.age % 100 >= 0 && this.age % 100 < 70) {
barrageType = pattern.random;
} else if (this.age % 100 >= 70 && this.age % 100 < 85){
barrageType = pattern.burst;
}
}
//barrageTypeに代入したパターンを実行
barrageType && barrageType.fire(this, ox, oy, dist);
なお、古いバージョンは
old_ver.0.1.htmlに移動します。
そのうちステージ制にして先に進むごとに難易度を高くするシステムにしたいです。また、スコアやランキング制度などもできればつけたいですね。
-
JavaScript/Ajax, ゲーム enchant.js, HTML5, シューティングゲーム