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



