大多數 Roblox 會話都在設備上播放,因此設計體驗時,必須正確支援這些輸入。 一旦您對滑鼠和鍵盤輸入感到舒適,請設定 移動 和 遊戲控制器 輸入。
為了方便,Roblox 設定了最常見的滑鼠和鍵盤輸入為 預設綁定,除了保留的綁定外,您可以覆蓋它們。
一般滑鼠輸入
像其他裝置輸入一樣,您可以使用 UserInputService 捕獲鼠標輸入。此服務提供可以隨時捕獲輸入變更和裝置輸入狀態的方便縮放方式。 Roblox 也支援舊鼠標輸入偵測,使用 PlayerMouse 和 ClickDetectors 。
此外,您可以使用 ContextActionService 來處理單個輸入上的多個行動,依據上下文,例如使用工具靠近岩石,或在建建造內打開門。請參閱 上下文依賴輸入行動 действия 了解設定上下文輸入行動動作。
當 LocalScript 放置在 StarterPlayerScripts 中時,會捕捉滑鼠點擊並將滑鼠位置列印到 輸出 窗口:
本地指令碼 - 輸出滑鼠點擊和位置
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- 首先檢查 "處理的事件" 是否為真
-- 這表示另一個腳本已經處理了輸入,因此這個腳本已經被忽略
if processedEvent then return end
-- 然後,檢查輸入是否為滑鼠事件
if inputObject.UserInputType == Enum.UserInputType.MouseButton1 then
print("Left Mouse button was pressed:", inputObject.Position)
elseif inputObject.UserInputType == Enum.UserInputType.MouseButton2 then
print("Right Mouse button was pressed:", inputObject.Position)
end
end
UserInputService.InputEnded:Connect(onInputEnded)
一般鍵盤輸入
要存取鍵盤事件,請使用 UserInputService.InputEnded 事件來跟蹤任何時間鍵盤輸入或其他輸入結束。與 滑鼠 事件類似,此事件只在 LocalScript 中運作。
當 LocalScript 放置在 StarterPlayerScripts 中時,它會列出 Enum.KeyCode 按鈕的輸入值,並且列出 1>Output1> 窗口的輸出值:
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- 首先檢查 "處理的事件" 是否為真
-- 這表示另一個已處理輸入的指令碼,因此這一個已被忽略。
if processedEvent then return end
-- 然後,檢查輸入是否為鍵盤事件
if inputObject.UserInputType == Enum.UserInputType.Keyboard then
print("A key was released: " .. inputObject.KeyCode.Name)
end
end
UserInputService.InputEnded:Connect(onInputEnded)
輸入介面
滑鼠和鍵盤輸入自動運行與互動使用者介面元素,例如 TextButtons 和 ImageButtons ,以及 TextBoxes ,以捕獲文字輸入像 Field 在形式中。
有關創建按鈕和輸入文字對象的更多資訊,請參閱 按鈕 和 輸入文字 。
角色移動模式
您可以通過修改 StarterPlayer.DevComputerMovementMode 的值來設置 Roblox 體驗的滑鼠和鍵盤移動控制程式,以一次變更以追蹤中值之一:
選項 | 說明 |
---|---|
用戶選擇 | 允許使用者在體驗中選擇他們想要的控制方式。 此選項是預設啟用。 |
鍵盤滑鼠 | 使用者可以按 WASD 移動和 1>空格1> 跳躍。這是鍵盤和滑鼠用戶的預設設定。 |
點擊移動 | 使用者只能通過右鍵點擊目標位置來移動體驗。 |
可編程 | 關閉所有預設控制,允許您 綁定自己的控制。 |
滑鼠圖示
您可以在體驗中自訂用戶的滑鼠圖示的外觀和行為,以創建一個協調的外觀,在您的所有 UI 元素上創建一個協調的外觀。這包括暫時變更用戶的滑鼠圖示在特定情況下,例如將鼠標擺動在按鈕上。
變更圖示
您可以在 LocalScript 中將 MouseIcon 屬性設置為 UserInputService 的自訂 Roblox 資產 ID 來變更使用者的預設滑鼠圖示為圓形,並且在中間有一個藍色點。例如,下列
local UserInputService = game:GetService("UserInputService")UserInputService.MouseIcon = "rbxassetid://3400146391"
隱藏圖示
您可以設置 UserInputService.MouseIconEnabled 為 false 中的 LocalScript 以顯示用戶的滑鼠圖示。例如,以下代碼會每兩秒切換滑鼠圖示從可見到隱藏:
local UserInputService = game:GetService("UserInputService")while true dotask.wait(2)UserInputService.MouseIconEnabled = falsetask.wait(2)UserInputService.MouseIconEnabled = trueend
鎖定圖示
您可以使用 UserInputService.MouseBehavior 與 Enum.MouseBehavior 或 LockCurrentPosition 值的 1> Class.MouseBehavior|LockCurrentPosition1> 或 4> Class.MouseBehavior|預設值4> 來鎖定鼠標圖示的位置,然後再次使用
如果使用者的滑鼠圖示在某個位置鎖定,UserInputService.InputChanged 仍會在使用者移動滑鼠時發射,因為它會在滑鼠上移動的距離上傳一個距離。例如,下列代碼示例會在使用者移動滑鼠後的一秒鐘後鎖定使用者的滑鼠圖示:
local UserInputService = game:GetService("UserInputService")
task.wait(5)
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCurrentPosition
UserInputService.InputChanged:Connect(function(inputObject)
if inputObject.UserInputType == Enum.UserInputType.MouseMovement then
print("Mouse delta is (" .. tostring(inputObject.Delta.X) .. ", " .. tostring(inputObject.Delta.Y) .. ")")
end
end)
Roblox 預設綁定
Roblox 為所有體驗提供預設鍵綁。這些是移動、攝影、和基本環境互動的最常用輸入。 除了保留鍵綁之外,您可以使用 ContextActionService 來創建平台間的鍵綁,以優先考慮多個鍵綁到單一動作。 請參閱 內容依賴輸入
Enum.CoreGuiType 功能,例如 背包 或 聊天 ,有一個列表額外預設輸入。您不能覆蓋保留輸入,例如0> Esc0> (Roblox 選單)或Enum.CoreGuiType3> (開發人員控制器)。
這些綁定是 Roblox 預設值,但您可以使用自訂指令來覆蓋它們。大多數 Roblox 使用者熟悉這些控制,因此您應該在特定情況下覆蓋它們。
輸入 | 行動 |
---|---|
W 向上 | 向前移動 |
S 向下 | 返回 |
A | 向左移動 |
D | 向右移動 |
空格條 | 跳躍 |
← → | 旋轉相機左或右 |
滑鼠右鍵 | 按下時,拖曳鼠標會移動相機視圖 |
滑鼠捲輪 IO | 將相機放大或縮小 |
Shift 鍵 | 啟用 EnableMouseLockOption 時,切換滑鼠鎖定 |