ふりかえり
前回は、スキルやボタンをクリックした際の効果音(SE)を追加しました!
プレイヤーの操作と音が連動し、ゲームに一体感が生まれました!
前回の投稿はこちら↓
会心の一撃を実装!
今回は「会心の一撃」を実装します!
現在は、攻撃ダメージが毎回同じなのでバトルの展開が読めてしまいます。
そこで、予測不能な要素として「会心の一撃」を導入し、よりスリリングなバトルを目指します!
スクリプトの追加
PlayerData.cs
会心系のステータスを追加
using UnityEngine; [System.Serializable] public class PlayerData { public string name; public int level; public int maxHP; public int currentHP; public int attack; public int defense; public int exp; public int gold; public int diamond; public int expToNextLevel; [Header("会心設定")] public float criticalRate = 0.1f; // 会心率(10%) public float criticalDamageMultiplier = 2.0f; // 会心ダメージ倍率(2倍) }
PlayerManager.cs
攻撃処理に会心判定を追加
public void Attack(EnemyManager enemyManager) { // 攻撃アニメーションを再生 if (animationManager != null) { animationManager.PlayerAttackAnimation(); } int baseDamage = Mathf.Max(0, player.attack - enemyManager.enemy.defense); // 会心ダメージ計算 int finalDamage = baseDamage; bool isCritical = false; if (battleManager != null) { var (damage, critical) = battleManager.CalculateDamage(baseDamage, player.criticalRate, player.criticalDamageMultiplier); finalDamage = damage; isCritical = critical; } enemyManager.TakeDamage(finalDamage); // バトルログに追加 if (battleLogManager != null) { if (isCritical) { battleLogManager.AddLog($"{player.name}の会心の一撃!{enemyManager.enemy.name}に{finalDamage}ダメージ!", Color.red); } else { battleLogManager.AddPlayerAttackLog(player.name, enemyManager.enemy.name, finalDamage); } } Debug.Log($"{player.name}が{enemyManager.enemy.name}に{finalDamage}ダメージ!{(isCritical ? "(会心)" : "")}"); }
Enemyにも同じような処理を追加します
Unityでの設定
- PlayerManager や EnemySO の Inspector にて、
- 会心率(例:0.1 = 10%)
- 会心ダメージ倍率(例:2.0倍) を設定します。


動作確認
戦闘中に「会心の一撃!」のログが赤字で表示され、
通常より大きなダメージが与えられていることを確認できました!

まとめ
今回は会心の一撃を実装しました!
バトルに運の要素が加わり、展開が読めなくなったことで緊張感がアップしました!
次回予告
次回は「会心の一撃の強化要素」を追加予定です!
お楽しみに!