[PlayCanvas 筆記 06] VIVERSE Extension 使用方法-觸發效果 (Trigger & Actions)

在 VIVERSE 中,要讓世界「動起來」不需要寫複雜的程式碼,主要是透過 Trigger(觸發器) 監聽事件,並連結 Action(動作) 執行結果。這一切都在 VIVERSE Extension 的 TriggerAndAction 插件中完成。

核心五元素

我們可以將每個互動寫成概括的公式

如果 主體 執行動作 造成 觸發器 生效,那麼就讓 受體 進行 指定行為

主體--誰發動了互動?
  • 常見對象: 玩家本人 (local-player)、場景中的小球、或是任何移動中的物件
  • 對應設定: 在 Trigger 插件的 Tags to filter 欄位填入標籤
選項名稱實際意義適用場景
local-player操作該電腦的玩家虛擬人物最常用的設定,確保只有「玩家角色」踩到才觸發。
自定義標籤 (如 Ball)帶有特定標籤的非玩家物件適用於道具間的互動(例如:球進入籃框)。
(隱含主體)正在螢幕前操作的使用者適用於「點擊 (Picking)」動作,預設即為操作者。
(留空)任何物件只要有碰撞體(如碎石、道具)進去都會觸發。
觸發動作--發生了什麼事?
  • 常見動作: 走進去、跳出來、撞到、滑鼠點擊
  • 對應設定: 選擇 Trigger 的類型(如 EnterLeavePicking
名稱 (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 的類型(如 EntityDisableEntityPlaySound
類別Action 選項效果說明
顯示控制EntityEnable / Disable使受體 出現 / 消失
顯示控制EntityToggleEnabled切換 受體的顯示狀態 (開/關)
顯示控制EntityFadeIn / FadeOut使受體 淡入 / 淡出 (平滑過渡)
物理碰撞EntityEnableCollision / Disable開啟/關閉 碰撞體 (變為可穿透)
移動傳送EntityTeleportAvatar將 (主體) 傳送到 受體的位置
移動傳送EntityCheckPoint將 (受體) 設為玩家的新重生點
多媒體EntityPlaySound / StopSound播放 / 停止 受體的音效
多媒體EntityPlayAnimation驅動受體 播放特定動畫
進階連動NotificationCenterPublish發送廣播通知 (暗號)
任務系統Quest (多種子選項)啟動、更新或重置 任務進度
效能管理EntityAssetUnload / Reload暫時卸載 / 重載 模型資源

實戰操作:超商感應門範例

用「走入超商感應區,門自動滑開」來實際操作一遍。

第一步:建立「觸發器」與「門」
  1. 建立感應區: 建立一個 3D Box,放在門口地板上。調整長寬高,並給它一個半透明材質(方便開發時觀察)。
  2. 設定組件: 在右側面板點擊 Add Component > Collision
  3. 建立門物件: 準備好你的「門」模型。
第二步:設定「觸發動作」與「指定動作」
  1. 選取剛才建立的 感應區 Box
  2. 點擊工具列的 Edit Viverse Extension,進入 TriggerAndAction 插件。
  3. 設定觸發動作 (Trigger):
    • 點擊 Add Trigger,選擇 EntitySubscribeTriggerEnter
    • Tags to filter 填入 local-player(這很重要!確保只有「玩家」走進去會開門,而不是路過的 NPC 或小球)。
  4. 設定指定動作 (Action):

相關文章

PlayCanvas & Viverse World
類型文章
相關文件Viverse DocsPlayCanvas Docs
基礎操作Viverse World.Claude Playcanvas Editor MCP Server.Viverse PlayCanvas Extension (安裝.觸發.媒體.撿拾.坐下)
開發者工具登入與身分驗證.排行榜
開發筆記滿版畫面.場景切換.密碼面板.模組化迷宮.科技感效果.對話框.碰撞計分.碰撞計分+遊戲重生.子彈閃避
PlayCanvas & Viverse World 我的開發筆記
教學文章VIVERSE WORLDPlayCanvas PROJECT
滿版畫面演示效果專案連結
場景切換演示效果專案連結
密碼面板演示效果專案連結
模組化迷宮演示效果專案連結
科技感材質效果演示效果專案連結
對話框演示效果專案連結
碰撞計分演示效果專案連結
碰撞計分+遊戲重生演示效果專案連結
碰撞計分+遊戲重生應用--子彈閃避演示效果專案連結
一次性對話框演示效果專案連結
0