大部分 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 內工作。
以下 ,當放置在 中時,會將按下的鍵的 印刷到 輸出窗口:
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 一起工作,這些元素會捕捉像字段一樣的文字輸入。
有關創建按鈕和文字輸入對象的更多信息,請參閱 按鈕 和 文字輸入 。
角色移動模式
您可以通過變更 StarterPlayer.DevComputerMovementMode 值來設置 Roblox 體驗的滑鼠和鍵盤移動控制方案追蹤中
選項 | 說明 |
---|---|
使用者選擇 | 讓使用者從體驗內的選單中選擇他們想要的控制模式。此選項預設為啟用。 |
鍵盤滑鼠 | 使用者可以按下 W A S D 來移動和 Space 跳躍。這是鍵盤和滑鼠用戶的預設設定,用於 使用者選擇 設定。 |
點擊以移動 | 使用者只能透過右鍵單擊目標位置來移動體驗。 |
可執行的 | 停用所有預設控件,並允許您 綁定自己的控件。 |
滑鼠圖示
您可以在體驗中自訂使用者的滑鼠圖示的外觀和行為,以在所有的介面元素上創建一致的風格。這包括在特定情況下暫時變更使用者的滑鼠圖示,例如懸停在按鈕上。
變更圖示
您可以在 中變更使用者的滑鼠圖示,設置 屬性為自訂 Roblox 資產 ID。例如,下列 LocalScript 將使用者的預設滑鼠圖示變更為圓形,中間有一個藍色點:
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 或 LockCenter 將其再次解鎖,或使用 Default 值將其再次解鎖。
如果使用者的滑鼠圖示被鎖定在一個位置,UserInputService.InputChanged仍然會在使用者移動滑鼠時發射,傳送滑鼠移動的距離。例如,下面的代碼樣本在一秒鐘後鎖定使用者的滑鼠圖示,然後 Studio 每當使用者移動滑鼠時都會列印滑鼠差異:
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 功能,例如 背包 或 聊天 ,有一個列表額外輸入的默認值。您不能覆蓋保留輸入,例如 Esc (Roblox 菜單) 或 F9 (開發者控制台)。
這些綁定是 Roblox 預設值,但您可以使用自訂腳本覆蓋它們。大多數 Roblox 使用者熟悉這些控制件,因此您只應在特定情況下覆蓋它們。
輸入 | 行動 |
---|---|
W ↑ | 前進 |
S ↓ | 返回 |
A | 向左移動 |
D | 向右移動 |
Spacebar | 跳 |
← → | 旋轉相機向左或向右 |
右滑鼠按鈕 | 當按下時,拖動滑鼠將相機視圖移動 |
滑鼠滾輪 I O | 將相機放大或縮小 |
Shift | 如果 EnableMouseLockOption 已啟用,切換鼠標鎖定模式 |