iT邦幫忙

2026 iThome 鐵人賽

DAY 18
0

開始製作第二款遊戲

前一款遊戲花了不少時間製作,包含角色操作、障礙物生成、分數系統與結算畫面。考量到鐵人賽剩下的時間,今天決定換一款比較簡單的遊戲,這次要製作的是經典的打地鼠。
打地鼠的基本玩法是讓地鼠從不同洞口出現,玩家再透過點擊地鼠來獲得分數。因此,今天先從地鼠的生成系統開始製作。

製作地鼠生成器

這次建立了MoleSpawner,負責定時生成地鼠,並從預先設定的洞口位置中隨機選擇一個來生成。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MoleSpawner : MonoBehaviour
{
    [Header("生成設定")]
    [Tooltip("存放 9 個洞口的位置或 Transform")]
    public Transform[] spawnPoints; 

    [Tooltip("要生成的地鼠 Prefab")]
    public GameObject molePrefab;   

    [Header("時間設定")]
    public float spawnInterval = 1.5f; // 多少秒生成一次

    private void Start()
    {
        // 先檢查設定是否正確,避免浪費資源跑 Coroutine
        if (spawnPoints == null || spawnPoints.Length == 0 || molePrefab == null)
        {
            Debug.LogError("[MoleSpawner] 請確保已在 Inspector 指派 spawnPoints 與 molePrefab!");
            return;
        }

        // 開始定時召喚協程
        StartCoroutine(SpawnRoutine());
    }

    private IEnumerator SpawnRoutine()
    {
        while (true)
        {
            // 等待指定的間隔時間
            yield return new WaitForSeconds(spawnInterval);

            // 執行生成邏輯
            SpawnMoleAtRandomHole();
        }
    }

    private void SpawnMoleAtRandomHole()
    {
        // 檢查是否有設定洞口與地鼠 Prefab
        if (spawnPoints.Length == 0 || molePrefab == null) return;

        // 1. 隨機取得 0 ~ (洞口數量-1) 的索引值
        int randomIndex = Random.Range(0, spawnPoints.Length);

        // 2. 取得該洞口的位置
        Transform targetPoint = spawnPoints[randomIndex];

        // 3. 在該位置生成地鼠
        Instantiate(molePrefab, targetPoint.position, Quaternion.identity);
    }
}

這程式碼主要是利用協程定時生成地鼠,透過Random.Range()隨機選擇洞口,使用 Instantiate()生成地鼠。目前的生成間隔設定為1.5秒,之後也可以依照遊戲需求調整。

第十八天的成果與之後目標

今天剛開始製作第二款遊戲,就打算先從最基礎的開始,今天先搞定生成,接下來再製作地鼠縮回洞口的效果和玩家血量機制。


上一篇
Day 17|製作遊戲開始與結算畫面
下一篇
Day 19|讓目標動起來並偵測玩家攻擊
系列文
從基礎到實作:使用 Google AI 學習程式設計 共 24 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言