到目前為止,AI Adventure Island 已經能走、能看、也有可調整的世界組件。
但它還沒有真正回應玩家。
玩家可以走到 NPC 旁邊,但 NPC 不會提示你可以交談。
玩家可以看到水晶,但水晶不會被收集。
玩家可以走到寶箱旁,但寶箱不會讓你打開。
這一章要建立第一批互動物件。
本章成果是讓玩家可以和至少三種場景物件互動:
這章會碰到 ProximityPrompt、ClickDetector、Touched 和事件驅動。
但本章還不是完整 Script 教學。
第 9 章才會正式進入「第一次讓 Assistant 寫 Script」並逐行拆解。第 8 章只建立互動元件選型和最小可測行為。
你要先學會問這個問題:
這個物件應該用哪一種互動方式?
而不是一看到互動就要求 AI 寫一大段系統。

圖 8-1 Assistant 可以直接修改 DataModel;加入互動後要立即檢查新增物件、Script 位置與觸發條件。
本章依據以下 Roblox 官方文件撰寫:
官方 ProximityPrompt 文件的重點是:它讓玩家靠近 3D 物件時看到互動提示,並用鍵盤、gamepad 或觸控輸入觸發行為。

圖 8-2 ProximityPrompt 會自動呈現互動動作、目標名稱與裝置輸入提示;文字要短,並讓玩家一眼知道按下後會發生什麼。
事件文件則提醒:Roblox scripting 是 event-driven。
也就是說,遊戲不是每一幀都用同一段程式硬檢查所有事,而是許多物件和服務會在特定事情發生時 fire event。
例如:
玩家靠近並按下提示 = ProximityPrompt.Triggered
玩家點擊物件 = ClickDetector.MouseClick
玩家碰到 Part = BasePart.Touched
本章會先讓你看懂這三種互動入口。
真正的系統化 Script 會留到下一章。
目前場景裡至少有:
AdventureIsland
World
Blockout_Parts
Visuals
ProceduralModels
Collectibles
Crystal_01
Crystal_02
Crystal_03
NPCs
NPC_QuestGiver_Placeholder
你可以再加入一個寶箱 placeholder:
AdventureIsland
Interactables
Chest_Starter
如果前面章節尚未建立 Interactables,這章會建立它。
本章要新增三種互動:
NPC_QuestGiver_Placeholder
ProximityPrompt: Talk
Chest_Starter
ProximityPrompt: Open
Crystal_01 / Crystal_02 / Crystal_03
Touched: collect feedback
另外也會介紹 ClickDetector,但不把它當作本章主互動方式。
原因是 ProximityPrompt 對世界互動比較直覺:
ClickDetector 比較適合明確點擊、滑鼠導向、或工具型互動。
Touched 適合「碰到就發生」的物件,例如水晶、陷阱、傳送門入口。
選錯互動方式,後面會很難修。
這次的 prompt 要求 Assistant 幫你建立互動骨架。
請輸入:
【Ch08 主任務|建立場景互動】
我正在製作 Roblox Studio 專案 AI Adventure Island。
目前 Workspace.AdventureIsland 裡已有:
- NPCs.NPC_QuestGiver_Placeholder
- Collectibles.Crystal_01 到 Crystal_03
- World.Blockout_Parts
- World.Visuals
- World.ProceduralModels
請幫我建立第一批可測試互動,但不要做完整任務、背包、資料保存或 UI HUD。
請完成:
1. 如果 AdventureIsland.Interactables 不存在,請建立 Folder。
2. 在 Interactables 裡建立一個簡單寶箱 placeholder,名稱為 Chest_Starter。
- 使用 Model 或 Part 都可以,但名稱要清楚。
- 放在 Path_03 或 NPC 附近,不要擋住主路線。
3. 在 NPC_QuestGiver_Placeholder 上加入 ProximityPrompt。
- ObjectText = "Guide"
- ActionText = "Talk"
- MaxActivationDistance = 8
- HoldDuration = 0
4. 在 Chest_Starter 上加入 ProximityPrompt。
- ObjectText = "Chest"
- ActionText = "Open"
- MaxActivationDistance = 7
- HoldDuration = 1.5
5. Crystal_01 到 Crystal_03 先使用 Touched 做最小收集回饋。
- 不要建立正式背包或分數系統。
- 只需要能在 Output 印出哪個玩家碰到哪個水晶。
- 可以暫時讓水晶變透明或消失作為測試回饋。
6. 如果需要 Script,請放在 ServerScriptService,名稱清楚,例如 InteractionPrototype.server.lua。
7. Script 只做最小 prototype 回饋,不要做 DataStore、leaderstats、RemoteEvent 或大型架構。
完成後請列出:
- 新增了哪些 Instance
- 每個互動物件使用 ProximityPrompt、ClickDetector 或 Touched 的原因
- 每個互動要如何 Playtest
- 哪些部分下一章需要正式拆解 Script
這個 prompt 有幾個刻意限制:
這些限制不是保守,而是讓章節焦點乾淨。
如果一次要求 Assistant 做「NPC 對話、任務、寶箱掉落、水晶收集、UI、存檔」,它很可能會產生一堆散落 Script。你會很難知道每個錯誤來自哪裡。
本章只要互動入口成立。
完成後,你希望 Explorer 接近這樣:
Workspace
AdventureIsland
NPCs
NPC_QuestGiver_Placeholder
ProximityPrompt
Collectibles
Crystal_01
Crystal_02
Crystal_03
Interactables
Chest_Starter
ProximityPrompt
World
Blockout_Parts
Visuals
ProceduralModels
ServerScriptService
InteractionPrototype
如果 Assistant 把 prompt 放在 Attachment 下,也可以接受:
Chest_Starter
PromptAttachment
ProximityPrompt
官方 ProximityPrompt 教學也建議,把 prompt 放在 Attachment 可以更精準控制互動點位置。對門鎖、寶箱、NPC 頭上提示點,這通常比直接 parent 到整個 Model 更好。
你不希望看到:
Workspace
Script
Chest
Prompt
CrystalScript
NPCScript
LocalScript
或:
StarterGui
HugeQuestUI
ReplicatedStorage
RemoteEvent
ServerScriptService
QuestSystem
InventorySystem
DataStoreSystem
這些可能之後會需要,但不是第 8 章。
本章要的只是:
玩家靠近物件 -> 看見提示
玩家按下互動 -> 有最小回饋
玩家碰到水晶 -> 有最小回饋
ProximityPrompt 是本章最重要的元件。
它適合這種互動:
它的優點是玩家靠近時才出現提示,而且 Roblox 會顯示對應輸入方式。
常用屬性如下:
ObjectText
ActionText
KeyboardKeyCode
GamepadKeyCode
MaxActivationDistance
HoldDuration
RequiresLineOfSight
ClickablePrompt
對本章的 NPC:
ObjectText = "Guide"
ActionText = "Talk"
MaxActivationDistance = 8
HoldDuration = 0
這代表玩家靠近 Guide 時,可以立刻按鍵交談。
對寶箱:
ObjectText = "Chest"
ActionText = "Open"
MaxActivationDistance = 7
HoldDuration = 1.5
寶箱使用 HoldDuration 是因為打開寶箱比單純交談更像一個需要確認的動作。玩家需要按住一小段時間,避免走過時誤觸。
這種設計其實就是遊戲 UX。
同樣都是互動,不同物件應該有不同的觸發節奏。
ProximityPrompt 可以 parent 到 BasePart、Model 或 Attachment。
本章初學時,直接放在 Part 或 Model 上最簡單。
但更精準的做法是放在 Attachment 上。
例如寶箱:
Chest_Starter
PromptAttachment
ProximityPrompt
你可以把 PromptAttachment 放在寶箱前方或上方,讓提示出現在玩家預期的位置。
對 NPC,也可以這樣:
NPC_QuestGiver_Placeholder
PromptAttachment
ProximityPrompt
如果 prompt 顯示位置怪怪的,不要急著改 Script。
先檢查:
Attachment。Attachment.Position 是否合理。MaxActivationDistance 是否太遠或太近。RequiresLineOfSight 是否導致玩家看不到提示。很多互動問題其實是放置問題,不是程式問題。
ClickDetector 讓 script 接收 3D 物件上的 pointer input。
它適合:
它支援 mouse,也可以在 touch device 觸發 click event,gamepad 也有基本支援。
但在本書的冒險島主線裡,NPC 和寶箱優先使用 ProximityPrompt。
原因是:
ProximityPrompt 會顯示玩家應該按什麼。ProximityPrompt 更適合靠近物件後互動。ProximityPrompt 可以設定 hold duration。ProximityPrompt 的跨裝置提示更直覺。你可以把 ClickDetector 當成對照。
如果你想做一個測試按鈕,可以問 Assistant:
請在 AdventureIsland.Interactables 建立 DebugButton_01。
使用 ClickDetector,玩家點擊時只在 Output 印出玩家名稱。
這是測試用物件,不要接任務或獎勵。
但不要把所有互動都做成點擊。
在 3D 世界探索遊戲裡,玩家通常期待靠近物件後按提示鍵互動。
Touched 是 BasePart 的事件。
當一個 Part 因為物理移動碰到另一個 Part 時,Touched 會 fire。
它很適合用於:
但 Touched 也容易誤觸。
原因是角色由多個身體 parts 組成,碰撞可能發生多次。背包道具、NPC、其他物理物件也可能碰到觸發區。
所以本章用 Touched 時,只做最小 prototype:
Crystal_01 touched by PlayerName
或讓水晶暫時變透明。
不要現在就做:
這些會在後面章節逐步建立。
本章要你先知道:
Touched 適合碰到就發生,但需要小心重複觸發。
如果一個互動需要玩家明確決定,就不要用 Touched。
例如跟 NPC 說話,不應該只靠碰到 NPC 就觸發。那會很容易造成干擾。
官方 events 文件說明,Roblox scripting 是 event-driven。
你可以把事件驅動理解成:
事情發生 -> Roblox fire event -> 你的 function 被呼叫
本章的三種互動都符合這個模式:
ProximityPrompt.Triggered
玩家按下互動提示後 fire
ClickDetector.MouseClick
玩家點擊物件後 fire
BasePart.Touched
物件碰到其他 Part 後 fire
第 9 章會正式拆解 function、變數、Connect() 和 Output。
這一章先建立概念:
互動不是物件自己會動。
互動是某個事件發生後,有程式回應。
當你請 Assistant 做互動時,prompt 要說清楚:
這比只說「讓寶箱可以互動」更可靠。
現在進入 Play mode。
請依序測試:
NPC
- 玩家靠近 NPC 時是否出現 Talk prompt?
- 提示距離是否合理?
- 按下互動鍵後 Output 是否有回饋?
- 交談 prompt 是否不會在太遠處顯示?
Chest_Starter
- 玩家靠近寶箱時是否出現 Open prompt?
- 是否需要按住約 1.5 秒才觸發?
- 中途放開是否不觸發?
- 觸發後是否有 Output 或簡單視覺回饋?
Crystal_01 到 Crystal_03
- 玩家碰到水晶時是否有 Output?
- 是否只在玩家碰到時觸發,而不是其他物件碰到就觸發?
- 是否會重複觸發太多次?
- 暫時透明或消失後是否不影響其他水晶?
如果 prompt 沒出現,先檢查:
ProximityPrompt 是否 parent 到 BasePart、Model 或 Attachment。Model 是否需要 PrimaryPart。MaxActivationDistance 是否太小。RequiresLineOfSight 是否擋住顯示。如果 Output 沒有任何回饋,檢查:
InteractionPrototype 是否在 ServerScriptService。如果水晶一直重複觸發,先記錄這個問題。
不要急著做完整防重複收集系統。
下一章會開始整理 Script,後面玩家資料與收集狀態會再處理。
如果 NPC prompt 沒出現,可以用:
【Ch08 修正 1|顯示 NPC 互動提示】
NPC_QuestGiver_Placeholder 的 ProximityPrompt 沒有出現。
請只檢查這個 NPC 的 prompt 設定:
1. ProximityPrompt 是否 parent 到 BasePart、Model 或 Attachment。
2. 如果 parent 到 Model,請確認是否需要 PrimaryPart。
3. MaxActivationDistance 是否合理,請設為 8。
4. RequiresLineOfSight 是否造成提示看不到;若有必要,請調整。
5. 不要新增任務系統或 UI。
6. 完成後列出你修改了哪些 Instance 和 Properties。
如果寶箱互動太快,可以用:
【Ch08 修正 2|調整寶箱互動距離】
Chest_Starter 的互動太容易誤觸。
請調整它的 ProximityPrompt:
1. ObjectText = "Chest"
2. ActionText = "Open"
3. MaxActivationDistance = 7
4. HoldDuration = 1.5
5. 不要改動位置、外觀或新增其他系統。
6. 完成後告訴我 Playtest 時要如何確認 hold 行為。
如果水晶重複觸發太多次,可以用:
【Ch08 修正 3|限制水晶重複觸發】
Crystal_01 到 Crystal_03 的 Touched prototype 會重複觸發太多次。
請在目前的 InteractionPrototype 裡加入最小 debounce。
限制:
1. 這仍然只是 prototype。
2. 不要建立正式玩家背包、leaderstats 或 DataStore。
3. 每顆水晶被觸發後,暫時只讓它變透明或停用觸碰。
4. 請解釋你如何避免同一顆水晶被連續觸發。
5. 下一章會再正式拆解 Script,所以請保持程式簡短。
如果 Assistant 一次加太多系統,可以用:
【Ch08 修正 4|縮回互動原型範圍】
你新增了太多超出本章範圍的系統。
請把本章互動縮回 prototype:
1. 保留 NPC 的 Talk ProximityPrompt。
2. 保留 Chest_Starter 的 Open ProximityPrompt。
3. 保留 Crystal 的 Touched 最小回饋。
4. 移除或不要使用 DataStore、leaderstats、Inventory、Quest UI、RemoteEvent。
5. 保留一個簡單的 InteractionPrototype server script 即可。
6. 完成後列出保留與移除的內容。
這些修正 prompt 的重點是維持章節邊界。
AI 很容易因為「互動」這個詞開始生成完整遊戲系統。
但你現在只需要可測互動入口。
完成本章後,建議 Explorer 結構如下:
Workspace
AdventureIsland
NPCs
NPC_QuestGiver_Placeholder
PromptAttachment
ProximityPrompt
Collectibles
Crystal_01
Crystal_02
Crystal_03
Interactables
Chest_Starter
PromptAttachment
ProximityPrompt
World
Blockout_Parts
Visuals
ProceduralModels
ServerScriptService
InteractionPrototype
整理時請記錄互動表:
Object: NPC_QuestGiver_Placeholder
Interaction: ProximityPrompt
ActionText: Talk
Distance: 8
Prototype feedback: Output print
Next: NPC dialogue / quest system
Object: Chest_Starter
Interaction: ProximityPrompt
ActionText: Open
Distance: 7
HoldDuration: 1.5
Prototype feedback: Output print or simple visual change
Next: reward system
Object: Crystal_01-03
Interaction: Touched
Prototype feedback: Output print / temporary disappear
Next: collect system / player state
這份表後面會很有用。
第 9 章開始,你會看 Assistant 寫的 Script。
第 10 章會做玩家資料與狀態。
第 14 章會做任務系統。
如果現在不記錄互動來源,後面很容易忘記某個功能是靠 prompt、click 還是 touched 觸發。
這一章,你讓 AI Adventure Island 第一次開始回應玩家。
你學到:
ProximityPrompt 適合 NPC、寶箱、門、開關這類明確互動。Attachment 可以控制 prompt 顯示和互動位置。ClickDetector 適合點擊導向的 3D 物件,但不應成為所有世界互動的預設答案。Touched 適合碰到就發生的物件,例如水晶、陷阱、傳送區。到這裡,第二部完成了從場景到互動入口的主線:
下一章開始,書會進入第三部:從物件變成遊戲系統。
我們會正式看 Assistant 寫出的 Script,逐行拆解事件、函式、變數、Output 與最小遊戲行為。
嗨!我是 Wolke,曾任 Google Developer Expert(GDE,2019–2023) 與 LINE API Expert。
我熱衷於研究 AI Agent、n8n 自動化工作流與全端開發架構,致力於將 AI 技術轉化為真正能落地的生產力工具。
如果你喜歡這篇文章,歡迎透過以下方式與我交流:
📚 技術著作
《實用的 Gemini API 開發點子書》:帶你運用 Gemini App、Google AI Studio、Gemini CLI 與 Antigravity IDE,打造 AI Agent 與實用產品。
📝 技術部落格
歡迎追蹤我的 Medium,我會持續分享 Agentic Automation、架構設計與實際開發的踩坑心得。
🎤 技術講座與合作
我持續受邀至技術社群及研討會,分享 AI Agent、自動化工作流、DevOps 與全端開發實戰。
我曾於 DevOpsDays Taipei 2026 主講「不再只是寫腳本!讓 AI 代理人成為你的 SRE 最佳夥伴」工作坊。
如果你的企業、社群或學校正在尋找相關主題講者,歡迎私訊聯繫,洽談講座與工作坊合作!
🎮 我的 Roblox 遊戲
🎁 免費贈送 OpenAI 或 Claude AI 額度
為了鼓勵大家實際動手打造自己的 Roblox 體驗,我每個月會開放:
參加方式:
確認完成後,我會邀請你加入並設定 50 點額度。名額有限,歡迎把握機會!