移動裝置輸入

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

大多數 Roblox 會話都是在移動裝置上進行的,因此在為廣泛受眾設計遊戲時,考慮移動 裝置方向 和其他 跨平台 因素非常重要。

為了簡化跨平台輸入,包括玩家與虛擬按鈕的互動,Roblox 提供了 輸入操作系統 來定義 操作,如「跳躍」、「衝刺」或「射擊」,並設置多個硬體輸入來驅動這些操作的 綁定

Roblox 還支援本地移動功能,如 觸覺反饋、觸控手勢,如 TouchSwipeTouchPinch,或在 AccelerometerEnabledGyroscopeEnabled 裝置上的加速度計和陀螺儀功能。

輸入類型檢測

在跨平台開發中,確定和響應玩家正在使用的 PreferredInput 類型是很重要的,通常是為了確保 UI 元素 如螢幕上的按鈕和菜單能夠優雅地運作並支援跨裝置互動。

例如,觸控設備假定觸控是默認輸入,因此可能會顯示觸控按鈕來進行操作,但玩家可能會選擇連接藍牙遊戲手柄。在這種情況下,觸控仍然是一種有效的輸入,但你可以假定玩家希望將已連接的遊戲手柄作為 主要 輸入類型,並可能將觸控作為螢幕 UI 的備用輸入。

請參閱 輸入類型檢測 獲取更多資訊。

裝置方向

默認情況下,Roblox 遊戲以 橫屏 模式運行,允許遊戲在玩家的裝置旋轉時在橫屏「左」和橫屏「右」之間切換。然而,遊戲也可以鎖定到特定方向。

有五種不同的方向模式,包括兩種基於傳感器的模式和三種鎖定模式。¹ 每一種都可以透過 StarterGui.ScreenOrientation 設置為 默認 方向,該屬性可以通過 Studio 的 屬性 窗口訪問。

傳感器模式
LandscapeSensor默認的 Roblox 設定,遊戲始終顯示為橫屏模式(不支援直屏模式),並且裝置檢測其物理方向以確保遊戲視圖始終向上。
Sensor裝置檢測其物理方向以確保遊戲視圖始終向上,根據需要在橫屏和直屏模式之間切換。
鎖定模式
LandscapeLeft在具有虛擬主頁/導航欄的裝置上,其觸控區域位於顯示屏底部。在具有實體主頁按鈕的裝置上,主頁按鈕位於顯示屏的左側。
LandscapeRight在具有虛擬主頁/導航欄的裝置上,其觸控區域位於顯示屏底部。在具有實體主頁按鈕的裝置上,主頁按鈕位於顯示屏的右側。
Portrait在具有虛擬主頁/導航欄的裝置上,其觸控區域位於顯示屏底部。在具有實體主頁按鈕的裝置上,主頁按鈕位於顯示屏下方。
¹ Roblox 不包括「直屏倒置」模式,因為許多裝置不原生支援該方向


除了默認的 StarterGui.ScreenOrientation 屬性外,你還可以通過 PlayerGui.ScreenOrientation 在遊戲過程中更改方向。當遊戲需要強制設置方向時,這可以非常有用,例如鎖定視圖為 Portrait,以便用於迷你遊戲。

以下代碼在 LocalScript 中設置屏幕方向為直屏,延遲一段時間後執行:

LocalScript - 更改屏幕方向為直屏

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
task.wait(5)
playerGui.ScreenOrientation = Enum.ScreenOrientation.Portrait

最後,你可以通過侦听 PlayerGui.CurrentScreenOrientation 屬性的值變更來檢測在遊戲過程中的屏幕方向變化。

LocalScript - 檢測屏幕方向變化

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local playerGui = player.PlayerGui
local function onOrientationChange()
print("方向變更為", playerGui.ScreenOrientation)
end
playerGui:GetPropertyChangedSignal("ScreenOrientation"):Connect(onOrientationChange)

觸覺反饋

大多數移動裝置內建有馬達以提供觸覺反饋。加入震動和震盪可以大大增強玩家的體驗,並提供超越視覺或音效的微妙反饋。

Roblox 支援可觸覺的裝置的觸覺反饋,包括大多數 iPhone、Pixel 和 Samsung Galaxy 裝置。觸覺反饋是通過 HapticEffect 實例管理的,這些實例可以設置為特定的 Type,如 GameplayCollisionUIClick

一旦 HapticEffect 就位,你可以通過 Play() 方法來啟動它,例如:


local Workspace = game:GetService("Workspace")
local effect = Instance.new("HapticEffect")
effect.Type = Enum.HapticEffectType.GameplayExplosion
effect.Parent = Workspace
-- 播放觸覺效果
effect:Play()
©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。