现代控制器和设备有内置电机提供触摸反馈。添加噪声和振动可以提供隐微的反馈,这很难通过视觉或音频传达。
Roblox 支持以下设备的震动:
- 支持 Android 和 iOS 的手机,包括大多数 iPhone、Pixel 和 Samsung Galaxy 设备
- 播放站游戏手柄
- Xbox 游戏手柄
- 任务触控器
概要
方法
将当前的振动值设置为指定的 UserInputType 和 Enum.VibrationMotor 。如果 SetMotor 未调用,将返回无。
如果指定的机器可用,返回 true 使用指定的 Enum.UserInputType 。
返回 true 如果指定的 Enum.UserInputType 支持触摸反馈。
- SetMotor(inputType : Enum.UserInputType,vibrationMotor : Enum.VibrationMotor,vibrationValues : Tuple):void
设置指定的 UserInputType 和 Enum.VibrationMotor 的振动强度。
属性
方法
GetMotor
将当前的振动值设置为指定的 UserInputType 和 Enum.VibrationMotor 。如果 SetMotor 未调用,将返回无。
参数
指定的 Enum.UserInputType 。
指定的 Enum.VibrationMotor。
返回
当前振动值设置为指定的 Enum.UserInputType 和 Enum.VibrationMotor 或为 nil 如果 SetMotor 未调用先前。
IsMotorSupported
如果指定的机器可用,返回 true 使用指定的 Enum.UserInputType 。
参数
正在检查 Enum.UserInputType 对 Enum.VibrationMotor 协助。
指定的 Enum.VibrationMotor 检查它是否支持指定的 Enum.UserInputType 。
返回
如果指定的发动机可用于指定的 Enum.UserInputType ,则为 true 。 如果不是,则为 false 。
IsVibrationSupported
返回 true 如果指定的 Enum.UserInputType 支持触摸反馈。
参数
指定的 Enum.UserInputType 检查是否支持触摸反馈。
返回
枚列表.UserInputType 支持触摸反馈。
SetMotor
设置指定的 UserInputType 和 Enum.VibrationMotor 的振动强度。注意,几乎所有的使用例子都指定 Gamepad1 作为 2>Class.InputObject.UserInputType2> 。
参数
返回
代码示例
local UserInputService = game:GetService("UserInputService")
local HapticService = game:GetService("HapticService")
local cachedInputs = {} -- Note that we use a cache so we don't attach a Changed event more than once.
local keyToVibration = {
[Enum.KeyCode.ButtonL2] = Enum.VibrationMotor.Small,
[Enum.KeyCode.ButtonR2] = Enum.VibrationMotor.Large,
}
local function onInputBegan(input)
if not cachedInputs[input] then
local inputType = input.UserInputType
if inputType.Name:find("Gamepad") then
local vibrationMotor = keyToVibration[input.KeyCode]
if vibrationMotor then
-- Watch this InputObject manually so we can accurately update the vibrationMotor.
local function onChanged(property)
if property == "Position" then
HapticService:SetMotor(inputType, vibrationMotor, input.Position.Z)
end
end
cachedInputs[input] = input.Changed:Connect(onChanged)
end
end
end
end
UserInputService.InputBegan:Connect(onInputBegan)