ふりかえり
前回は、テストプレイしてくださった方々からのフィードバックをもとに、戦闘の倍速機能を追加しました!
テンポが改善され、よりストレスなく戦闘を楽しめるようになりました。
ステージ選択機能を実装!
今回も引き続き、クローズドテストでいただいたご意見をもとに改善を行います。
特に多かったのが、
「ステージを選べず、不便に感じる」
「敵がどんどん強くなる一方で、弱い敵を相手にしたくても戻れない」
という声でした。
現状の課題
これまでの仕様では、ステージ内の全てのモンスターを倒すと自動で次のステージに進む仕組みでした。
そのため、一度進んだら戻ることができず、金策やレベル上げが困難でした。
実装した機能
今回、以下の2つの機能を新たに実装しました。
① 繰り返しモード
特定のステージを繰り返しプレイ可能にする機能です。
ONにすることで、モンスターを全滅させたあとも、そのステージの最初に戻って再戦できるようになります。
→ 効率よく経験値やG(ゲーム内通貨)を稼げるので、育成や金策にとても便利!
② ステージ移動機能
任意のタイミングで、ステージを前後に移動できる機能です。
進みすぎて敵が強すぎたら1つ前のステージに戻ったり、逆に戻りすぎたら最大到達ステージまで一気に進めるようにしています。
スクリプト
StageManager.cs(ステージ管理)
- 現在のステージ番号や最大到達ステージを管理
- ステージクリア後、繰り返しか次ステージかを判定し、適切な処理を行う
- 前後のステージへの移動関数を用意
- 各ステージの敵数やフラグをリセット
private int currentStage = 1; // 現在のステージ private int monstersDefeatedInStage = 0; // 現在のステージで倒したモンスター数 private bool isStageClearing = false; // ステージクリア中かどうかを管理 private bool isRepeatModeEnabled = false; // 繰り返しモードが有効かどうか private int maxStageReached = 1; // 到達した最大ステージ // 繰り返しモードの場合は現在のステージをリセット、そうでなければ次のステージに進む if (isRepeatModeEnabled) { Invoke("ResetCurrentStage", 1.0f); // 1秒後に現在のステージをリセット } else { Invoke("NextStage", 1.0f); // 1秒後に次のステージに進む } // 次のステージに進む public void NextStage() { currentStage++; monstersDefeatedInStage = 0; // 現在のステージをリセット(繰り返しモード用) private void ResetCurrentStage() { monstersDefeatedInStage = 0; isStageClearing = false; // ステージクリア中フラグをリセット // 敵の準備とアニメ、UI更新など… } // 前のステージに移動 public void GoToPreviousStage() { if (currentStage > 1) { currentStage--; monstersDefeatedInStage = 0; isStageClearing = false; // BGM・背景更新、敵準備、UI更新… } } // 次のステージに移動 public void GoToNextStage() { if (currentStage < maxStageReached) { currentStage++; monstersDefeatedInStage = 0; isStageClearing = false; // BGM・背景更新、敵準備、UI更新… } } // 前後移動の可否 public bool CanGoToPreviousStage() { return currentStage > 1; } public bool CanGoToNextStage() { return currentStage < maxStageReached; }
BattleUIManager.cs(UI制御)
- 「繰り返しモード」のボタンUIを制御
- ON/OFF状態によって、ボタンの色やラベルを変更
- 「前のステージ」「次のステージ」ボタンの有効/無効も条件で切り替え
[Header("Repeat Mode UI")] public Button repeatModeButton; // 繰り返しモードボタン public TextMeshProUGUI repeatModeButtonText; // ボタンテキスト public Color repeatModeEnabledColor = Color.green; public Color repeatModeDisabledColor = Color.white; // 繰り返しモードボタンのイベントリスナーを設定 repeatModeButton.onClick.RemoveAllListeners(); repeatModeButton.onClick.AddListener(ToggleRepeatMode); // 繰り返しモードボタンの更新 private void UpdateRepeatModeButton() { if (stageManager == null || repeatModeButton == null) return; bool isRepeatModeEnabled = stageManager.IsRepeatModeEnabled(); if (repeatModeButtonText != null) { repeatModeButtonText.text = isRepeatModeEnabled ? "繰り返し: ON" : "繰り返し: OFF"; } var buttonImage = repeatModeButton.GetComponent<Image>(); if (buttonImage != null) { buttonImage.color = isRepeatModeEnabled ? repeatModeEnabledColor : repeatModeDisabledColor; } } // 前後ボタンの押下可否更新 bool canGoPrevious = stageManager.CanGoToPreviousStage(); previousStageButton.interactable = canGoPrevious; bool canGoNext = stageManager.CanGoToNextStage(); nextStageButton.interactable = canGoNext;
動作確認
- 繰り返しモードをONにすると、ステージクリア後に同じステージが再開されました!
- 前後ボタンでステージ移動もスムーズに行え、自由にプレイできるように!
まとめ
今回は、ユーザビリティ向上のために「ステージの繰り返しプレイ」および「任意のステージ移動」機能を追加しました。
これにより、自分に合ったステージで繰り返し戦えるようになり、金策やレベル上げの自由度が大幅に向上しました!
プレイヤーが自分のペースで遊べる環境が整ってきたと思います
次回予告
次回は、
- 画面が回転してしまう問題
- モンスター画像がぼやけてしまう現象
など、実機プレイで判明した細かい問題点の修正に取り組みます!
お楽しみに!