VRService

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

无法创建
服务

VRService 负责处理 Roblox 和虚拟现实(VR)之间的交互。它的方法、属性和事件帮助您为寻求在 VR 设备上体验 Roblox 的最佳体验的用户提供最佳体验。

有关 VR 设备发布体验的更多信息,请参阅VR 指南

代码示例

VRService

local VRService = game:GetService("VRService")
local part = workspace.Part
local handOffset = VRService:GetUserCFrame(Enum.UserCFrame.LeftHand)
-- Account for headscale
handOffset = handOffset.Rotation + handOffset.Position * workspace.CurrentCamera.HeadScale
part.CFrame = workspace.CurrentCamera.CFrame * handOffset

概要

属性

方法

属性

AutomaticScaling

读取并联

当设置为 Enum.VRScaling.World 时, Camera.HeadScale 会调整,使世界的尺寸从角色的视角看到。小型虚拟形象的玩家会感知周围的对象是大于角色的大小。

AvatarGestures

读取并联

设置为“真”后,一个 VR 玩家可以使用他们的控制器和头戴设备来动画他们的手和头。

此属性必须在服务器上设置。

读取并联

FadeOutViewOnCollision

读取并联

当真的时,一个 VR 玩家的头部撞到物对象时,他们的视图会褪色到黑色。 此属性防止玩家在 VR 中通过墙壁看到东西。 默认值是 true。

GuiInputUserCFrame

未复制
读取并联

此属性描述 Enum.UserCFrame 在 VR 中的输入负责。例实例,如果 VR 头戴式耳机负责,该值将为 Enum.UserCFrame.Head

要检查 Roblox 是否检测到任何 VR 设备,这将对 VR 的输入负责,您可以检查 VREnabled 属性。

代码示例

VRService.GuiInputUserCFrame

local VRService = game:GetService("VRService")
if VRService.VREnabled then
print(VRService.GuiInputUserCFrame.Name)
else
print("No VR device detected!")
end
读取并联

ThirdPersonFollowCamEnabled

只读
未复制
读取并联

VREnabled

只读
未复制
读取并联

此属性描述用户是否使用虚拟现实(VR)设备。

如果启用了 VR 设备,您可以通过方法 such as UserInputService:GetUserCFrame() 与其位置和移动进行交互。您还可以使用 UserInputService.UserCFrameChanged 事件来反应 VR 设备的移动。


local UserInputService = game:GetService("UserInputService")
local isUsingVR = UserInputService.VREnabled
if isUsingVR then
print("User is using a VR headset!")
else
print("User is not using a VR headset!")
end

此属性仅在 LocalScript 中使用。

还见

代码示例

VR Head Tracking

local VRService = game:GetService("VRService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.CharacterAdded:Wait()
local head = character:WaitForChild("Head")
local function TrackHead(inputType, value)
if inputType == Enum.UserCFrame.Head then
head.CFrame = value
end
end
if VRService.VREnabled then
-- Set the initial CFrame
head.CFrame = VRService:GetUserCFrame(Enum.UserCFrame.Head)
-- Track VR headset movement and mirror for character's head
VRService.UserCFrameChanged:Connect(TrackHead)
end

方法

GetTouchpadMode

此方法返回 Enum.VRTouchpadMode 指示指定 Enum.VRTouchpad 的模式。 返回的模式表示用户与其触摸板玩游戏的方式。

这也可以与多个 UserInputService VR 方法和事件使用。

此方法仅在 LocalScript 中使用。

参数

指定的 VRTouchpad


返回

指定的 VRTouchpad 的模式。

代码示例

VRService:GetTouchpadMode

local VRService = game:GetService("VRService")
VRService:GetTouchpadMode(Enum.VRTouchpad.Left)

GetUserCFrame

此方法返回一个 CFrame 描述特定虚拟现实设备的位置和方向为实体世界空间的偏移。此方法应用于实现游戏中虚拟现实兼容性时使用,以获取并跟踪连接的虚拟现实设备的移动。

使用此方法,开发人员可以实现像重新位置相应的用户在游戏中角色的重新定位等功能。这可以通过更改用户在游戏中角色的 CFrame 来匹配指定的 VR 设备使用 CFrame 列表中的值。

VRService 还提供一个 UserCFrameChanged 事件,该事件会自动触发,当连接的 VR 设备的 CFrame 发生变更,即使它在 0> Class.LocalScript0> 中使用。

此方法仅在 LocalScript 中使用。

参数

指定的 UserCFrame


返回

代码示例

VRService:GetUserCFrame

local Workspace = game:GetService("Workspace")
local VRService = game:GetService("VRService")
local camera = Workspace.CurrentCamera
local part = script.Parent.Part
local handOffset = VRService:GetUserCFrame(Enum.UserCFrame.LeftHand)
-- Account for headscale
handOffset = handOffset.Rotation + handOffset.Position * camera.HeadScale
part.CFrame = camera.CFrame * handOffset

GetUserCFrameEnabled

此方法返回 true 如果可用的虚拟现实设备 (VR) 可用于聆听。它可以用于确定是否要使用特定的 VR 设备,例如 Enum.UserCFrame,是否连接到用户的游戏。

这也可以与多个 UserInputService VR 方法和事件使用。

此方法仅在 LocalScript 中使用。

参数

指定的 VR 设备类型。


返回

一个指示是否启用指定的 VR 设备(true)或禁用(false)的Boolean。

代码示例

VRService:GetUserCFrameEnabled

local VRService = game:GetService("VRService")
local isEnabled = VRService:GetUserCFrameEnabled(Enum.UserCFrame.Head)
if isEnabled then
print("VR device is enabled!")
else
print("VR device is disabled!")
end

RecenterUserHeadCFrame

void

此方法将CFrame用户的头重新中心到当前位置的 VR 头套的位置。它可以用于确保用户的游戏头部按照用户的 VR 头戴设备的位置放置。

这与 UserInputService:RecenterUserHeadCFrame() 相同。

此方法仅在 LocalScript 中使用。


返回

void

代码示例

VRService:RecenterUserHeadCFrame

local VRService = game:GetService("VRService")
VRService:RecenterUserHeadCFrame()

RequestNavigation

void

此方法使用指定的 CFrame 作为视图器 parabola 的起始位置,使用指定的 Enum.UserCFrame 作为导航路线从用户 VR 设备到目的地的视觉化方式。它可以用于将虚拟实境 (VR) 集成到您的游戏中,通过提供一个可以从用户 VR 设备的 VR 视图器到目的地导航路线的视觉化方式来实现此

VRService 有一个类似的事件,NavigationRequested,用于检测此类请求。这也可以与多个 UserInputService VR 方法和事件中使用。

此方法仅在 LocalScript 中使用。

参数

cframe: CFrame

指定的 CFrame 坐标。

inputUserCFrame: Enum.UserCFrame

您所要求导航的 VR 设备。


返回

void

代码示例

VRService:RequestNavigation

local VRService = game:GetService("VRService")
local destination = workspace:FindFirstChild("NavigationDestination")
VRService:RequestNavigation(Enum.UserCFrame.Head, destination.CFrame)

SetTouchpadMode

void

此方法将指定的 Enum.VRTouchpad 的模式设置为指定的 Enum.VRTouchpadMode 。它可以用于改变用户的虚拟实境 (VR) 触摸板模式,以便用户使用触摸板与游戏交互。

这也可以与多个 UserInputService VR 方法和事件使用。

此方法仅在 LocalScript 中使用。

参数

您指定的 VRTouchpad 您想要设置模式。

您想要将指定的 VRTouchpad 设置到。


返回

void

代码示例

VRService:SetTouchpadMode

local VRService = game:GetService("VRService")
VRService:SetTouchpadMode(Enum.VRTouchpad.Left, Enum.VRTouchpadMode.Touch)

活动

Enum.UserCFrame 为指定的 CFrame VR 设备请求导航时,此事件会触发。它使用 1> Datatype.CFrame1> 坐标和指定的 4> Class.UserCFrame4> 来表示设备请求导航。

此事件可以与 UserInputService 服务事件和方法使用。

该事件只在本地触发,因此它只能在 LocalScript 中使用。

参数

cframe: CFrame

请求 CFrame 坐标。

inputUserCFrame: Enum.UserCFrame

指示您所需要的 VR 设备。


代码示例

VRService.NavigationRequested

local VRService = game:GetService("VRService")
VRService.TouchpadModeChanged:Connect(function(cframe, inputUserCFrame)
print(inputUserCFrame.Name .. " made request with CFrame: " .. cframe)
end)

TouchpadModeChanged

这个事件会触发,如果 Enum.VRTouchpadMode 的一个 Enum.VRTouchpad 发生了变更。您可以使用此事件来跟踪 VR 触摸板连接到用户客户端的状态。

此事件可以与 UserInputService 服务事件和方法使用。

该事件只在本地触发,因此它只能在 LocalScript 中使用。

参数

更改模式的触摸板。

新模式。


代码示例

VRService.TouchpadModeChanged

local VRService = game:GetService("VRService")
VRService.NavigationRequested:Connect(function(pad, mode)
print(pad.Name .. " Touchpad changed to state: " .. mode.Name)
end)

UserCFrameChanged

此事件发生 when a Enum.UserCFrame 被改变,例如 when 用户移动连接的 VR 设备。它可以与 GetUserCFrame() 一起使用,以跟踪 VR 设备的 CFrame 坐标,并且改变/

该事件只在本地触发,因此它只能在 LocalScript 中使用。

参数

更改的 VR 设备类型。

value: CFrame

更新后的 CFrame 虚拟现实设备的坐标。


代码示例

VRService.UserCFrameChanged

local VRService = game:GetService("VRService")
VRService.UserCFrameChanged:Connect(function(userCFrameType, cframeValue)
print(userCFrameType.Name .. " changed. Updated Frame: " .. tostring(cframeValue))
end)

UserCFrameEnabled

此事件发生,当 Enum.UserCFrame 启用或禁用时。它可以与 GetUserCFrameEnabled() 一起使用来跟踪是否启用指定的 UserCFrame 以及其状态的变化。

该事件只在本地触发,因此它只能在 LocalScript 中使用。

参数

UserCFrame|UserCFrame 已启用或禁用。

enabled: bool

一个指示是否启用 UserCFrame 的Boolean ( true ) 或禁用 ( false ) 的Boolean。


代码示例

VRService.UserCFrameEnabled

local VRService = game:GetService("VRService")
VRService.UserCFrameEnabled:Connect(function(type, enabled)
if enabled then
print(type.Name .. " got enabled!")
else
print(type.Name .. " got disabled!")
end
end)