Roblox 接受来自 Xbox 和 PlayStation 控制器等游戏手柄的输入。为了简化包括游戏手柄在内的 跨平台 输入,Roblox 提供了 输入动作系统,以定义 动作 如“跳跃”、“奔跑”或“射击”,并为多个硬件输入设置 绑定 来驱动这些动作。
在绑定游戏手柄输入时,请参阅 常见控制方案,以为玩家创建一致的游戏手柄体验。当输入设置完成后,您可以通过在支持的控制器上包含 触觉反馈 来增强玩家的体验。
在构建对游戏手柄的支持时,请记得通过连接的游戏手柄或 Studio 中的 控制器模拟器 频繁进行测试。
输入类型检测
在跨平台开发中,重要的是您要确定并响应玩家使用的 PreferredInput 类型,通常是为了确保 UI 元素 如屏幕上的按钮和菜单能够优雅地工作并支持跨设备的交互。
例如,控制台假定游戏手柄是默认输入,但 PC 或笔记本电脑上的玩家也可能选择连接蓝牙游戏手柄。在这种情况下,鼠标/键盘仍然是该玩家的有效输入,但您可以假设他们希望将连接的游戏手柄作为 主要 输入类型。
有关更多信息,请参见 输入类型检测。
常见控制方案
在考虑 输入动作系统 的特定控制绑定时,最好在不同的游戏之间建立一致性。以下输入绑定将帮助玩家立即对游戏手柄控制感到熟悉和舒适。
| 输入 | 常见用例 |
|---|---|
| ButtonA | 接受玩家提示或 GUI 选择。也可用于主要动作,如跳跃。 |
| ButtonB | 取消玩家提示或 GUI 选择。也可用于次要动作,如闪避、翻滚或奔跑。 |
| Thumbstick1 | 通常与角色移动相关联。 |
| Thumbstick2 | 通常与相机移动相关联。 |
| ButtonL2, ButtonR2 | 通常用于主要动作,如射击。 |
| ButtonL1, ButtonR1, ButtonX, ButtonY | 次要动作,如重新加载、瞄准或访问库存或小地图。 |

触觉反馈
许多游戏手柄控制器内部都装有马达以提供触觉反馈。添加震动可以大大增强玩家的体验,并提供超出视觉或音频的细微反馈。
Roblox 支持 PlayStation 游戏手柄、Xbox 游戏手柄和 Quest Touch 控制器的触觉反馈。触觉反馈是通过 HapticEffect 实例管理的,该实例可以设置为特定的 Type,例如 GameplayCollision 或 UIClick。
一旦 HapticEffect 就位,您可以通过 Play() 方法来启动它,例如:
local Workspace = game:GetService("Workspace")local effect = Instance.new("HapticEffect")effect.Type = Enum.HapticEffectType.GameplayExplosioneffect.Parent = Workspace-- 播放触觉效果effect:Play()
控制器模拟
控制器模拟器可以从Studio的测试菜单中访问,让您可以在Studio中准确模拟游戏手柄输入。默认控制器是一个通用的游戏手柄,但您可以从左上方的选择菜单中选择其他选项。

在测试游戏时,您可以使用虚拟控制器和鼠标控制游戏。
您还可以单击右上角的编辑映射来查看和编辑虚拟控制器的按键映射,例如将E映射为ButtonL2或将9映射为ButtonA。这些映射像其他Studio设置一样保存(按控制器、按用户、按电脑),并在模拟器窗口和3D视口中转换为游戏手柄事件。