控制器事件
說明
使用 Controller Event,可透過實體控制器執行自訂行為。你可以從頭建立控制器操作,不必新增螢幕上的搖桿或按鈕。
選擇玩家、控制項,以及你想接收的事件。將它的白色事件輸出連接到下一個行為。若要自訂移動或瞄準,請將它的數值輸出拖曳到負責計算移動的行為中。
如果遊戲已經使用 Joystick Controlled、Jump with Button 或觸控按鈕,Map Control Inputs 可以為現有輸入新增替代方式。
按下按鈕時播放音效
白色連線會在按下按鈕時執行 Play Sound。此範例不需要綠色資料拖曳。
- 新增 Controller Event,並讓它從場景開始時便開始監聽。
- 將 Player 設為 1、Control 設為 Bottom Button (A / ×),並將 Event 設為 Pressed。
- 新增 Play Sound。使用 Select Asset,從資產庫中選擇一段短音效。
- 將 Controller Event 底部任一空白的白色圓圈,連接到 Play Sound 頂部的白色圓圈。
- 連接支援的控制器並執行專案。按下底部面板按鈕。
每按一次按鈕,就會聽到一次音效。按住按鈕不會重複觸發此 Pressed 事件。While Held 會在控制項持續啟用的每個影格執行連接的行為,因此只有在你需要重複執行時才使用。
綠色的 Input 輸出會識別這個控制器輸入,供輸入相關功能使用。使用白色執行連線來觸發 Play Sound。
屬性
| 屬性 | 預設值 | 設定內容 |
|---|---|---|
| Player | 1 | 要讀取其控制器的指定玩家。輸入 0 可監聽任何已連接的控制器,包括未指派給玩家的控制器。 |
| Control | Bottom Button (A / ×) | 要監聽的控制器位置。從下方的控制項中選擇一個。連接的裝置必須支援該控制項。 |
| Event | Pressed | 選擇白色事件連線執行的時機。 |
控制項選項
| 類型 | 確切選項 |
|---|---|
| 方向控制項 | D-pad、Left Stick、Right Stick |
| 面板按鈕 | Bottom Button (A / ×)、Right Button (B / ○)、Left Button (X / □)、Top Button (Y / △) |
| 肩部按鈕與扳機 | Left Shoulder、Right Shoulder、Left Trigger、Right Trigger |
| 搖桿按壓 | Left Stick Click (L3)、Right Stick Click (R3) |
| 選單按鈕 | Menu、Options |
面板按鈕依位置命名,因此你可以在支援的不同控制器品牌間使用相同設定。控制器上印的字母或符號可能會有所不同。
事件選項
| 事件 | 連接的行為執行時機 |
|---|---|
| Pressed | 控制項啟用時執行一次。對搖桿或 D-pad 而言,當它偏離中立位置時便會觸發。 |
| Released | 控制項停用或回到中立位置時執行一次。 |
| While Held | 控制項持續啟用期間,每個影格都會執行。 |
| Value Changed | 每當數值變更時執行,包括方向或壓力變化,以及回到中立位置時。 |
搖桿持續啟用時改變方向,不會再次觸發 Pressed 事件。使用 Value Changed 讀取這些變化;如果計算需要每個影格都執行,則使用 While Held。
輸出
| 輸出 | 類型 | 意義 |
|---|---|---|
Input | 輸入參照 | 識別此控制器輸入,包括其 Player 和 Control。第一個硬體事件發生前即可使用。在 Rebind Input 中選取此行為,即可變更它自己的控制器綁定。 |
value | 數字 | 按鈕或扳機的壓力,或方向幅度,範圍為 0 到 1。數位按鈕通常輸出 0 和 1。 |
x | 數字 | 水平方向值,向左為 −1,向右為 1。按鈕輸出 0。 |
y | 數字 | 垂直方向值,向下為 −1,向上為 1。按鈕輸出 0。 |
pressed | 布林值 | 控制項啟用時為 True;停用時為 false。 |
deviceID | 文字 | 提供此事件的控制器在執行期間的 ID。你可以將它傳給 Assign Controller。請在目前工作階段中使用,不要將它儲存為永久的硬體 ID。 |
playerIndex | 數字(整數) | 觸發事件的控制器目前的指派狀態。0 表示未指派。若使用 Player 0 監聽,這個值可能會與 Player 屬性不同。 |
dt | 數字 | While Held 影格更新經過的秒數。使用此輸出進行 While Held 的逐影格計算。 |
數值和裝置輸出會描述剛觸發的事件。Input 提供持續有效的輸入參照。變更輸出值不會改變你在屬性中選取的 Player。
按下按鈕時加入震動
將 Controller Event 連接到 Vibrate,即可在玩家按下按鈕時觸發震動。此範例使用 Player 1、Bottom Button (A / ×) 和 Pressed。
將 Vibrate 的 Player 設為 1,並將 Vibrate 選項設為 Controller。在 Intensity (%) 輸入 70,並在 Duration (ms) 輸入 150。將 Controller Event 底部的白色圓圈連接到 Vibrate 頂部的白色圓圈。
此範例會在每次按下時要求觸發一次短促震動。支援觸覺回饋的已配對 iPhone 也可使用此功能。
你可以將 Controller Event 的 playerIndex 輸出拖曳到 Vibrate 的 Player 欄位,讓它依照事件中玩家的指派狀態執行。若要回饋給單一玩家,請使用大於零的已指派玩家欄位。Vibrate 會將 0 視為所有已連接的控制器。
建立自訂移動方式
選擇 Left Stick,並在自訂移動計算中使用 x 和 y。若要建立資料連線,請先選取接收行為。將 Controller Event 的綠色輸出圖示拖曳到接收屬性,然後從輸出清單中選擇 x 或 y。
將搖桿完全推向右側時,輸出為 x = 1, y = 0。完全推向上方時,輸出為 x = 0, y = 1。依照遊戲所需的速度或力道調整這些數值。
規劃好放開搖桿時應發生什麼事。控制項停用時,While Held 便會停止執行。如果你的行為圖表設定了會持續生效的速度,請加入放開時停止速度的動作,或使用 Value Changed,讓行為圖表收到中立值。角色的加速、碰撞和動畫則由你的移動行為決定。
若要為自訂動作提供鍵盤或滑鼠替代輸入,請在適當情況下將 Keyboard Event 或 Mouse Event 連接到相同動作。Controller Event 會讀取控制器控制項。它的 Input 參照不能作為反向對應,透過 Map Control Inputs 建立觸控輸入。
多名玩家
一名玩家的事件使用 Player 1,另一名玩家則使用 Player 2。兩名玩家可以使用同一個 Control 名稱。Assign Controller 和 Controls 覆蓋介面會決定哪個已連接裝置屬於各個欄位。
使用 Player 0 時,各裝置可以獨立觸發事件。deviceID 和 playerIndex 輸出會告訴你事件來自哪個控制器。這適合用於加入遊戲的動作。使用 While Held 時,同一影格內,兩個持續按住控制項的控制器可能會分別觸發回呼。
請透過平台支援的 Bluetooth 或 USB 設定連接或配對控制器。遊戲會從已連接的裝置中進行選擇。
重新綁定與執行
Controller Event 啟動後便會開始監聽。若將另一個行為連接到它頂部的白色圓圈,該執行流程會啟動監聽器。僅完成註冊不會觸發所選的輸入事件。
編輯器中可編輯的 Controls 覆蓋介面和 Rebind Input 可變更此事件的控制器綁定。系統產生的各玩家 Controls 清單不會列出 Player 0 監聽器,因為這類監聽器通常用於加入遊戲或選單導覽。如需變更,可在 Rebind Input 中明確選取這類事件。
停用的行為和暫停的遊戲過程不會執行這些輸入動作。重新綁定期間,擷取到的輸入不會進入遊戲。若要處理中斷連線,請使用 Controller Status。應將 Released 視為輸入事件,而不要依賴它來判斷裝置是否已中斷連線。

