ふりかえり
前回は回復スキルを実装し、戦闘中にHPを回復できるようになりました!これで戦略の幅が広がりました!
デスペナルティーを実装!
今回はプレイヤーがモンスターに倒されたときのペナルティ処理を導入します。
以下の2つのペナルティを加えることで、戦闘に緊張感が生まれます。
- 所持金が半分になる
- 現在ステージの敵討伐数がリセットされる
スクリプトの変更
PlayerManagerに死亡時の処理を追加
プレイヤーの HP が 0 になったときに呼ばれる TakeDamage() の中で、デスペナルティーを適用する処理を呼び出します。
// 死亡時のデスペナルティーを適用 private void ApplyDeathPenalty() { // 現在の所持金を保存 savedGold = player.gold; // 所持金を半分にする player.gold = Mathf.FloorToInt(player.gold * 0.5f); // ステージの敵撃破数をリセット if (stageManager != null) { stageManager.ResetEnemiesDefeated(); } // バトルログにデスペナルティーを記録 if (battleLogManager != null) { int lostGold = savedGold - player.gold; battleLogManager.AddLog($"デスペナルティー!所持金が{lostGold}G減少しました。", Color.red); battleLogManager.AddLog("ステージの敵撃破数がリセットされました。", Color.red); } Debug.Log($"デスペナルティー適用: 所持金 {savedGold}G → {player.gold}G"); Debug.Log("ステージの敵撃破数がリセットされました。"); }
StageManagerにステージの敵撃破数をリセットする処理を追加します。
// 現在のステージの敵撃破数をリセット(デスペナルティー用) public void ResetEnemiesDefeated() { monstersDefeatedInStage = 0; Debug.Log($"ステージ{currentStage}の敵撃破数がリセットされました。"); }
Unityで動作確認
実際にゴブリンに敗北してみると…


- 所持金が半分に
- ステージ2の進行状況(敵撃破数)もゼロにリセット
きちんとデスペナルティーが適用されました!
まとめ
今回はデスペナルティーを実装しました。
緊張感が増し、「やられる前に倒す」戦い方を意識するようになりますね!
次回予告
次回はスキル解放システムを実装予定です!
スキルの成長とともに戦闘の楽しさが増していきますよ。お楽しみに!