既然得分系統大致上已經完成了,那今天我決定來修改召喚的C#,因為一開始沒分數只能全部目標混著生成,有分數那就設計成依照分數來逐漸增加高血量的目標。
首先將原本的生成程式修改成TargetSpawner(原MoleSpawner),並加入不同殭屍的分數解鎖門檻。
目前依我的想法設定為:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TargetSpawner : MonoBehaviour
{
[Header("生成設定")]
public Transform[] spawnPoints;
[Header("目標 Prefabs (按 1~5 滴血順序依序拖入)")]
[Tooltip("Element 0: 1滴血\nElement 1: 2滴血\nElement 2: 3滴血\nElement 3: 4滴血\nElement 4: 5滴血")]
public GameObject[] targetPrefabs;
[Header("時間設定")]
public float spawnInterval = 1.5f;
[Header("解鎖門檻設定")]
public int scoreForType2 = 1000;
public int scoreForType3 = 2500;
public int scoreForType4 = 5000;
public int scoreForType5 = 8500;
private void Start()
{
if (spawnPoints == null || spawnPoints.Length == 0 || targetPrefabs == null || targetPrefabs.Length == 0)
{
Debug.LogError("[TargetSpawner] 請確保已指派 spawnPoints 與 targetPrefabs!");
return;
}
StartCoroutine(SpawnRoutine());
}
private IEnumerator SpawnRoutine()
{
while (true)
{
yield return new WaitForSeconds(spawnInterval);
SpawnTargetAtRandomHole();
}
}
private void SpawnTargetAtRandomHole()
{
// 1. 取得當前總分數(若 ScoreManager 不存在則預設為 0)
int currentScore = ScoreManager.Instance != null ? ScoreManager.Instance.totalScore : 0;
// 2. 根據分數計算當前解鎖到的最大索引值 (Max Index)
int maxUnlockedIndex = 0; // 預設只解鎖第 1 種 (Index 0)
if (currentScore >= scoreForType5 && targetPrefabs.Length >= 5)
{
maxUnlockedIndex = 4; // 解鎖到第 5 種
}
else if (currentScore >= scoreForType4 && targetPrefabs.Length >= 4)
{
maxUnlockedIndex = 3; // 解鎖到第 4 種
}
else if (currentScore >= scoreForType3 && targetPrefabs.Length >= 3)
{
maxUnlockedIndex = 2; // 解鎖到第 3 種
}
else if (currentScore >= scoreForType2 && targetPrefabs.Length >= 2)
{
maxUnlockedIndex = 1; // 解鎖到第 2 種
}
// 3. 隨機選取一個【已解鎖範圍內】的殭屍 Prefab (0 到 maxUnlockedIndex)
int randomTargetIndex = Random.Range(0, maxUnlockedIndex + 1);
GameObject selectedTargetPrefab = targetPrefabs[randomTargetIndex];
// 4. 隨機選一個洞口生成
int randomHoleIndex = Random.Range(0, spawnPoints.Length);
Transform targetPoint = spawnPoints[randomHoleIndex];
Instantiate(selectedTargetPrefab, targetPoint.position, Quaternion.identity);
}
}
這次的重點是讓TargetSpawner可以取得ScoreManager的目前分數。當玩家分數還沒達到門檻時,就只會生成第一種殭屍。當分數達到門檻後,則會將新的殭屍加入生成範圍。例如玩家達到2500分後,就可以隨機生成1~3血的殭屍。
這樣隨著玩家分數增加,遊戲中會慢慢出現血量更高的殭屍。
今天主要完成了以下幾個部分:
接下來我應該會針對擊殺數來進行技能上的製作,或者增加生成與縮回的速度。