🙌
phaserでゲーム開発 第六回
phaserでゲーム開発シリーズ、第六回。
前回の記事はこちら。
この記事では、敵キャラの登場・爆発エフェクトの追加・敵を倒す処理について解説します。
この動画のようなエフェクトができます。
Phaser での敵キャラ実装解説:登場・爆発エフェクト・撃破処理
1. 敵キャラの登場
敵キャラは Phaser.Physics.Arcade.Group を使って複数まとめて管理します。
以下のように生成することで、複数の敵を一度に扱えるようになります。
// 敵グループを作成
this.#enemys = this.physics.add.group();
// 敵を追加
const enemy = this.#enemys.create(200, 400, 'enemy');
enemy.setCollideWorldBounds(true);
-
this.physics.add.group()で物理演算対応のグループを生成 -
create(x, y, 'enemy')で座標を指定してスプライトを追加 -
setCollideWorldBounds(true)で画面外に出ないよう制御
2. 爆発エフェクトの追加
敵を倒した際には爆発エフェクトを再生して、演出を強化します。
エフェクトは専用スプライトを用意し、アニメーションを登録して使います。
const expload = this.physics.add.sprite(enemy.x, enemy.y, 'expload');
expload.anims.play('expload-effect', true);
// アニメーション終了後に削除
expload.on(Phaser.Animations.Events.ANIMATION_COMPLETE, () => {
expload.destroy();
});
- 敵の位置
(enemy.x, enemy.y)を基準に生成 - アニメーションを再生して、終了後に
destroy()でリソース解放
3. 敵を倒す処理
斬撃(攻撃スプライト)と敵グループの当たり判定は、overlap を利用します。
重なった瞬間にコールバックが呼ばれ、敵を倒す処理を実行します。
this.physics.add.overlap(slash, this.#enemys, (s, enemy) => {
if (enemy && enemy.active) {
// 爆発エフェクトを表示
const expload = this.physics.add.sprite(enemy.x, enemy.y, 'expload');
expload.anims.play('expload-effect', true);
// 敵を削除
enemy.destroy();
// エフェクト終了後に削除
expload.on(Phaser.Animations.Events.ANIMATION_COMPLETE, () => {
expload.destroy();
});
}
});
処理の流れ
-
slash(斬撃)とthis.#enemys(敵グループ)の overlap を監視 - 当たった敵がアクティブなら処理を実行
- 敵の位置に爆発エフェクトを生成して再生
- 敵を
destroy()で消去 - エフェクトも再生終了後に
destroy()
まとめ
- 敵は
Phaser.Physics.Arcade.Groupでまとめて管理すると便利 - 倒された敵には爆発エフェクトを再生し、演出を強化
-
physics.add.overlapを使えば、斬撃と敵の接触を簡単に検知できる - 「敵が出てくる → 攻撃が当たる → 爆発して消える」 という一連の流れをシンプルに表現可能
この仕組みを組み込めば、アクションゲームらしい爽快感を演出できます。
次のステップとしては、敵の動きや攻撃パターンを追加してみるのも良いでしょう。
株式会社ONE WEDGE
【Serverlessで世の中をもっと楽しく】 ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
Discussion