Skip to content

第08回 GameManagerとゲーム状態

前回: 第07回 アイテムとオブジェクトプール / 次回: 第09回 UIとシーン遷移

今回の授業内容

  • ステートマシンを構成する状態、遷移、遷移条件、遷移時処理について
  • キャラクターの状態とゲーム全体の状態を区別した実装
  • 遷移図と遷移表からGameManagerを実装
  • Enemyの撃破をイベントで通知し、GameManagerで集計
  • 規定数撃破とPlayer死亡から勝敗を決め、ゲーム進行を停止する

今回の配布コード

08.zipは、第07回終了時点のコードへゲーム状態管理を追加した一式です。

配布ファイル一覧
ファイル今回の変更
GameState.csゲーム全体の状態を定義する
GameManager.cs状態、撃破数、勝敗、終了処理を管理する
DamageReceiver.cs死亡した瞬間をイベントで通知する
Enemy.cs死亡した事実を一度だけ通知する
PlayerController.csPlayerの入力と攻撃を明示的に停止する
EnemyController.csEnemyの行動と攻撃を明示的に停止する
EnemySpawner.cs新規生成と管理中Enemyの行動を停止する

この回で作るもの

第07回までに作成したPlayer、Enemy、アイテムの仕組みを、ゲーム全体のルールへ接続します。Enemyを規定数倒すとゲームクリア、PlayerのHPが0になるとゲームオーバーになり、結果が決まった後はゲームプレイだけを停止します。

情報発生元GameManagerの判断
Enemyを1体倒したEnemy撃破数を1増やす
撃破数が目標へ達した撃破数ゲームクリアにする
PlayerのHPが0になったDamageReceiverゲームオーバーにする

授業の進め方

読み進め方

各ステップでは、最初に「このステップの目的」、最後に「チェックリスト」を示します。必須の実装と操作は本文に置き、仕組みの詳しい説明や発展的な設計は補足として分けています。

この回の最低到達

  • Ready → Playing → GameClearReady → Playing → GameOverを確認できる
  • Enemyの撃破がGameManagerに通知され、撃破数が集計される
  • 終了後にPlayer操作、Enemy生成、Enemy行動が停止する
  • 状態、遷移、遷移条件、遷移時処理の違いを説明できる