WIZ-CODE.blog

JavaScriptやAjaxをテーマとしたブログです。

*

シューティングゲーム 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, ゲーム , ,