34歩目 会心の一撃を実装! Unityで1日1ステップ!ノンフィールドRPG開発日記

1日1歩開発日記

ふりかえり

前回は、スキルやボタンをクリックした際の効果音(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倍) を設定します。

動作確認

戦闘中に「会心の一撃!」のログが赤字で表示され、

通常より大きなダメージが与えられていることを確認できました!

まとめ

今回は会心の一撃を実装しました!

バトルに運の要素が加わり、展開が読めなくなったことで緊張感がアップしました!

次回予告

次回は「会心の一撃の強化要素」を追加予定です!

お楽しみに!

タイトルとURLをコピーしました