在 VIVERSE 中,要讓世界「動起來」不需要寫複雜的程式碼,主要是透過 Trigger(觸發器) 監聽事件,並連結 Action(動作) 執行結果。這一切都在 VIVERSE Extension 的 TriggerAndAction 插件中完成。
核心五元素
我們可以將每個互動寫成概括的公式
如果 主體 執行動作 造成 觸發器 生效,那麼就讓 受體 進行 指定行為
主體--誰發動了互動?
- 常見對象: 玩家本人 (
local-player)、場景中的小球、或是任何移動中的物件 - 對應設定: 在 Trigger 插件的
Tags to filter欄位填入標籤
| 選項名稱 | 實際意義 | 適用場景 |
| local-player | 操作該電腦的玩家虛擬人物 | 最常用的設定,確保只有「玩家角色」踩到才觸發。 |
自定義標籤 (如 Ball) | 帶有特定標籤的非玩家物件 | 適用於道具間的互動(例如:球進入籃框)。 |
| (隱含主體) | 正在螢幕前操作的使用者 | 適用於「點擊 (Picking)」動作,預設即為操作者。 |
| (留空) | 任何物件 | 只要有碰撞體(如碎石、道具)進去都會觸發。 |
觸發動作--發生了什麼事?
- 常見動作: 走進去、跳出來、撞到、滑鼠點擊
- 對應設定: 選擇
Trigger的類型(如Enter、Leave、Picking)
| 名稱 (Trigger 選項) | 說明 | 核心邏輯 |
| EntitySubscribeTriggerEnter | (主體) 進入 觸發器區域 | 區域感應(如自動門) |
| EntitySubscribeTriggerLeave | (主體) 離開 觸發器區域 | 區域感應(如離開區域燈滅) |
| EntitySubscribeCollisionStart | (主體) 撞到 觸發器 | 硬碰硬的實體碰撞 |
| EntitySubscribeCollisionEnd | (主體) 結束碰撞 觸發器 | 離開實體接觸 |
| NotificationCenterSubscribeEntityPicking | (主體) 點擊/觸摸 觸發器 | 滑鼠點選或手指觸控 |
| NotificationCenterSubscribe | 收到來自遠方的廣播暗號 | 統一的發送暗號,所有帶有該暗號的受體開始執行自身指定的動作 |
| EntitySubscribeAnimationStart | 動畫開始播放時 | 流程連動 |
| EntitySubscribeAnimationEnd | 動畫播完時 | 流程連動 |
| EntitySubscribeAnimationEvent | 動畫播到特定時間點 | 精準時間點觸發(如腳落地) |
觸發器--在哪裡發生的?
- 常見載體: 一個透明的感應盒、一個按鈕模型、一片金幣
- 對應設定: 你目前「選中」並加入 VIVERSE Extension 的那個物件
| 類型 | 說明 | 必備組件 |
| 透明感應區 | 隱形的盒子或球體,玩家可穿過 | Collision (需勾選 Trigger 模式) |
| 實體互動件 | 牆壁、按鈕、模型、地板 | Collision + Rigidbody |
| 中繼監聽器 | 單純用來接收通知的空物件 | 無 (通常隱藏在 Hierarchy 中) |
受體--誰產生反應?
- 常見對象: 觸發器自己(自己消失)、遠方的門(門打開)、場景的燈(燈亮起)
- 對應設定: 在 Action 區塊的
Specify Execution Entity用滴管選取,或是透過Notification廣播
| 選項 | 操作方法 | 說明 |
| Self (自己) | 欄位保持空白 | 觸發器自己就是受體(如:金幣被撞後自己消失)。 |
| 指定物件 | 使用滴管選取物件 | 點開關讓「門」開啟,門就是指定物件。 |
| 標籤群組 | 搭配 ByTag 行為使用 | 讓全場帶有指定標籤的物件一起反應。 |
| 廣播對象 | 配合 Publish 行為使用 | 不指定誰,而是發送訊號讓「有在聽」的受體自發反應。 |
指定行為--產生的結果?
- 常見行為: 消失/出現、播放音效、傳送到某處、播放動畫
- 對應設定: 選擇
Action的類型(如EntityDisable、EntityPlaySound)
| 類別 | Action 選項 | 效果說明 |
| 顯示控制 | EntityEnable / Disable | 使受體 出現 / 消失 |
| 顯示控制 | EntityToggleEnabled | 切換 受體的顯示狀態 (開/關) |
| 顯示控制 | EntityFadeIn / FadeOut | 使受體 淡入 / 淡出 (平滑過渡) |
| 物理碰撞 | EntityEnableCollision / Disable | 開啟/關閉 碰撞體 (變為可穿透) |
| 移動傳送 | EntityTeleportAvatar | 將 (主體) 傳送到 受體的位置 |
| 移動傳送 | EntityCheckPoint | 將 (受體) 設為玩家的新重生點 |
| 多媒體 | EntityPlaySound / StopSound | 播放 / 停止 受體的音效 |
| 多媒體 | EntityPlayAnimation | 驅動受體 播放特定動畫 |
| 進階連動 | NotificationCenterPublish | 發送廣播通知 (暗號) |
| 任務系統 | Quest (多種子選項) | 啟動、更新或重置 任務進度 |
| 效能管理 | EntityAssetUnload / Reload | 暫時卸載 / 重載 模型資源 |
實戰操作:超商感應門範例
用「走入超商感應區,門自動滑開」來實際操作一遍。
第一步:建立「觸發器」與「門」
- 建立感應區: 建立一個 3D Box,放在門口地板上。調整長寬高,並給它一個半透明材質(方便開發時觀察)。
- 設定組件: 在右側面板點擊
Add Component> Collision。 - 建立門物件: 準備好你的「門」模型。
第二步:設定「觸發動作」與「指定動作」
- 選取剛才建立的 感應區 Box。
- 點擊工具列的 Edit Viverse Extension,進入
TriggerAndAction插件。 - 設定觸發動作 (Trigger):
- 點擊
Add Trigger,選擇EntitySubscribeTriggerEnter。 - 在
Tags to filter填入local-player(這很重要!確保只有「玩家」走進去會開門,而不是路過的 NPC 或小球)。
- 點擊
- 設定指定動作 (Action):
相關文章
PlayCanvas & Viverse World
| 類型 | 文章 |
|---|---|
| 相關文件 | Viverse Docs.PlayCanvas Docs |
| 基礎操作 | Viverse World.Claude Playcanvas Editor MCP Server.Viverse PlayCanvas Extension (安裝.觸發.媒體.撿拾.坐下) |
| 開發者工具 | 登入與身分驗證.排行榜 |
| 開發筆記 | 滿版畫面.場景切換.密碼面板.模組化迷宮.科技感效果.對話框.碰撞計分.碰撞計分+遊戲重生.子彈閃避 |



![[PlayCanvas 筆記 04] VIVERSE Extension 使用方法-發布專案 (Publish) [PlayCanvas 筆記 04] VIVERSE Extension 使用方法-發布專案 (Publish)](https://i0.wp.com/img.jfsblog.com/2026/01/20260112232253_0_0b5cd1.jpg?quality=90&zoom=2&ssl=1&resize=350%2C233)

![[PlayCanvas] 滿版畫面設計 (VIVERSE World) [PlayCanvas] 滿版畫面設計 (VIVERSE World)](https://i1.wp.com/img.jfsblog.com/2026/01/20260111173300_0_7739d6.jpg?quality=90&zoom=2&ssl=1&resize=350%2C233)
![[PlayCanvas 筆記 01] 前置作業-環境與帳號 [PlayCanvas 筆記 01] 前置作業-環境與帳號](https://i1.wp.com/img.jfsblog.com/2026/01/20260112000122_0_4eee0a.jpg?quality=90&zoom=2&ssl=1&resize=350%2C233)

![[PlayCanvas 筆記 05] VIVERSE Extension 使用方法-任務系統 (Quests) [PlayCanvas 筆記 05] VIVERSE Extension 使用方法-任務系統 (Quests)](https://i1.wp.com/img.jfsblog.com/2026/01/20260112232359_0_592e82.jpg?quality=90&zoom=2&ssl=1&resize=350%2C233)
![[PlayCanvas 筆記 03] 如何為瀏覽器安裝 VIVERSE Extension 外掛 [PlayCanvas 筆記 03] 如何為瀏覽器安裝 VIVERSE Extension 外掛](https://i1.wp.com/img.jfsblog.com/2026/01/20260112005243_0_efac5b.jpg?quality=90&zoom=2&ssl=1&resize=350%2C233)
![[PlayCanvas + VIVERSE] 一次性 NPC 對話框 [PlayCanvas + VIVERSE] 一次性 NPC 對話框](https://i2.wp.com/img.jfsblog.com/2025/11/20251109212442_0_e7359a.jpg?quality=90&zoom=2&ssl=1&resize=350%2C233)