バトルシーンを作成する
Asseets -> Create -> Scene
シーンフォルダに新しいシーンファイルを作成します。名前は"Battle"にしておきます。
敵キャラの状態を保存するクラス
PlayRecordの中にHeroStatusとは別にUnitStatus型のメンバ変数EnemyStatusを作っておきます。
PlayRecord.cs
public UnitRecord EnemyStatus;
敵キャラをランダムに取得するメソッド
EnemyDataクラスに敵キャラのデータをランダムで取得するメソッドを追加しておきます。
EnemyData.cs
public EnemyParams GetRandomEnemy() { int rnd = Random.Range(0, enemyList.Length); EnemyParams enemy = enemyList[rnd]; return enemy; }
エンカウントしたときに呼び出されるメソッド
エンカウントしたら呼び出されるメソッドを作ります。
今後、ボス戦やイベント戦、レアキャラ戦などはこのメソッドをいじります。
DungeonDirector.cs
private void EncountEnemy() { EnemyParams enemy = GameManager.instance.enemyData.GetRandomEnemy(); UnitRecord enemyStatus = new UnitStatus(); enemyStatus.ID = enemy.ID; enemyStatus.level = GameManager.instance.playRecord.dungeonStatus.floor; enemyStatus.hp = enemyStatus.GetMaxHP(); enemyStatus.exp = enemyStatus.level; GameManager.instance.playRecord.enemyStatus = enemyStatus; GameManager.LoadScene("BATTLE"); }
ランダムで敵キャラデータを取得し、ダンジョンの階層に合わせてレベルや持っている経験値を変更します。
HPも最大HPで初期化します。
そして、バトルシーンに切り替えます。
前進したときに50%の確率でエンカウントする
DungeonDirectorのActionAdvanceメソッドの中に50%の確率でEncountEnemyメソッドを呼び出す処理を追加します。
この処理は食料が0になったかを判定する処理のあとに書きます。
DungeonDirector.cs
int rnd = Random.Range(0, 100); if (rnd < 50) { EncountEnemy(); return; }
これで、ダンジョンを前進すると50%の確率で敵と遭遇するようになりました。