47歩目 回復薬を実装! Unityで1日1ステップ!ノンフィールドRPG開発日記

1日1歩開発日記

ふりかえり

前回はゲーム序盤のストーリーに対応した全10エリア・計30ステージを追加しました!

ボリュームが一気に増え、遊びごたえもグッとアップしました!

回復薬を実装!

今回のステップでは、新たに「回復薬」の仕組みを導入しました!

これまでプレイヤーのHPを回復する方法は、

  • レベルアップによる自動回復
  • クールタイム30ターンのヒーリングスキル

の2つしかなく、特に中盤以降の連戦では回復が間に合わず敗北することが多発していました。

そこで、より戦術の幅を持たせるために「回復薬」を導入しました。

回復薬の取得方法とゲームバランス

回復薬は「ダイヤ3個」と引き換えに購入可能です。

ダイヤはアーティファクトガチャや強化にも使用する重要資源。

そのため、プレイヤーは以下のような戦略的選択を迫られることになります:

  • 今のステージを突破するために回復薬を使うか?
  • それとも、将来に備えてアーティファクトや強化に使うか?

このリソース管理が、プレイヤーごとのプレイスタイルに個性を生み出す仕組みになっています。

スクリプトの変更

PowerUpManager.cs:回復薬の購入処理

このスクリプトでは、プレイヤーがダイヤを使って回復薬を購入する処理を管理しています。

  • ダイヤが3つ以上あれば減算し、回復薬を1つ増加
  • SE(効果音)を再生し、メッセージを表示
  • UI(プレイヤー側・バトル側両方)を即時更新
    // 回復薬を購入
    public void PurchaseHealingPotion()
    {
        if (playerManager.player.diamond >= healingPotionCost)
        {
            playerManager.player.diamond -= healingPotionCost;
            playerManager.player.healingPotion++;
            
            // 購入SEを再生
            if (audioManager != null)
            {
                audioManager.PlayPowerUpSE();
            }
            
            ShowMessage("回復薬を購入しました!");
        }
        else
        {
            ShowMessage("ダイヤが足りません。");
        }
        
        playerManager.playerUIManager.UpdateUI();
        UpdateUI();
        
        // BattleUIManagerのUIも更新
        if (battleUIManager != null)
        {
            battleUIManager.UpdateHealingPotionUI();
        }
    }

BattleUIManager.cs:回復薬の使用処理

こちらは実際にバトル中に回復薬を使用する処理です。

  • 所持していれば回復薬を消費
  • プレイヤーのHPを最大値の30%分回復
  • UI更新(ボタンの有効/無効、所持数表示、HPゲージ更新)

これにより、バトル中にいつでも即時回復が可能になります。もちろん戦況によっては温存も選択肢に。

    // 回復薬を使用
    public void UseHealingPotion()
    {
        if (playerManager == null || playerManager.player == null) return;
        
        if (playerManager.player.healingPotion > 0)
        {
            // 回復薬を使用
            playerManager.player.healingPotion--;
            
            // HPを30%回復
            int healAmount = Mathf.RoundToInt(playerManager.player.maxHP * 0.3f);
            playerManager.player.currentHP = Mathf.Min(playerManager.player.currentHP + healAmount, playerManager.player.maxHP);
            
            // UIを更新
            UpdateHealingPotionUI();
            if (playerManager.playerUIManager != null)
            {
                playerManager.playerUIManager.UpdateUI();
            }
            
            Debug.Log($"回復薬を使用しました。HPが{healAmount}回復しました。");
        }
    }

    // 回復薬UIの更新
    public void UpdateHealingPotionUI()
    {
        if (playerManager == null || playerManager.player == null) return;
        
        // 所持数を表示
        if (healingPotionCountText != null)
        {
            healingPotionCountText.text = $"{playerManager.player.healingPotion}";
        }
        
        // ボタンの有効/無効設定
        if (healingPotionButton != null)
        {
            bool canUse = playerManager.player.healingPotion > 0;
            healingPotionButton.interactable = canUse;
            
            // アイコンの色を変更
            if (healingPotionIcon != null)
            {
                healingPotionIcon.color = canUse ? healingPotionEnabledColor : healingPotionDisabledColor;
            }
        }
    }

Unityでの設定

バトル画面で回復薬を使用するためのButtonと、回復薬の所持数を表示するTextを作ります。

作成したUIをBattleUIManagerのInspector上で設定します。

またPowerUp画面で回復薬をダイヤと交換するためのButton、回復薬のコストを表示するText、所持数を表示するTextを作ります。

作成したUIをPowerUpManagerのInspector上で設定します。

動作確認

PowerUp画面にダイヤと回復薬を交換するボタンがあるか確認します。

一番下にありました!

回復薬を交換するボタンをクリックするとダイヤを3つ消費して回復薬1つと交換できます。

5つ交換してみます!

するとバトル画面の攻撃ボタンやスキルボタンが並んでいるエリアの右端に回復薬ボタンが表示されています。回復薬のアイコンの下側に小さく5と表示されており、先ほど交換した回復薬の数と一致しています。

ちょうどダメージを喰らっているので、回復薬を1つ使ってみます。

回復薬ボタンの下の数字が4になり体力も回復しました!

まとめ

今回の実装により、バトルの緊張感が増し、プレイヤーが「今を生きるか、将来に備えるか」の選択を楽しめるようになりました。

  • ゲームバランスの崩壊を防ぎつつ
  • 新たな戦術性を追加し
  • ダイヤの使い道にプレイヤーごとの個性が反映される

そんな意図を持ったアップデートです!

進捗

今回は回復薬の実装をしました!

  • (済)オート戦闘:ボタン操作なしでもバトルが進むようにする。
  • (済)オートスキル発動:スキルも自動で発動する機能。
  • UIのブラッシュアップ:デザインとレイアウトを整えて見やすくする。
  • (済)ステージ数の拡充(最低20):遊びごたえを高めるためにボリュームアップ。
  • 復活機能(広告視聴):ゲームオーバー時、広告視聴で復活できる仕組み。
  • 広告報酬でダイヤ獲得:無課金でもダイヤが手に入る仕組み。
  • G強化・アーティファクト・転生の拡張:各システムにさらなる深みを持たせる。
  • (済)回復薬の追加:ステージを進めやすくする。
  • アニメーションの追加:ゲーム画面にもっと動きを持たせる。
  • レアモンスターの追加:わくわく感を追加する。

次回予告

次回は「G強化(ゴールドによる強化)」や「アーティファクト」、「マナ強化」など、育成・強化の自由度をさらに高めるアップデートに取り組みます!

戦略の幅が大きく広がる予定です。お楽しみに!

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