VRService

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

No creable
Servicio

VRService es responsable de manejar las interacciones entre Roblox y la realidad virtual (VR).Sus métodos, propiedades y eventos te ayudan a proporcionar la mejor experiencia para los usuarios finales que buscan experimentar Roblox en dispositivos VR.

Consulte Directrices de VR para obtener más información sobre la publicación de una experiencia para dispositivos VR.

Muestras de código

The following example demonstrates how to get the Enum.UserCFrame of the left controller and place a part at that point in real world space. The CFrame of the controller changes whenever the device moves, so you should update the necessary parts whenever VRService.UserCFrameChanged fires.

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

Resumen

Propiedades

Métodos

Eventos

Propiedades

AutomaticScaling

Leer paralelo

Cuando se establece en Enum.VRScaling.World , Camera.HeadScale ajusta para que la escala del mundo se vea desde la perspectiva del avatar.Un jugador con un avatar pequeño percibirá los objetos alrededor de ellos como más grandes que un jugador con un avatar grande.

AvatarGestures

Leer paralelo

Cuando se establece en verdadero, un jugador de VR podrá animar sus manos y cabeza usando sus controladores y visor.

Esta propiedad debe establecerse en el servidor.

Leer paralelo

FadeOutViewOnCollision

Leer paralelo

Cuando es verdadero, la vista de un jugador de VR se desvanece a negro cuando su cabeza se choca con un objeto.Esta propiedad evita que los jugadores puedan ver a través de las paredes mientras están en VR.El valor predeterminado es true.

GuiInputUserCFrame

No replicado
Leer paralelo

Esta propiedad describe lo que Enum.UserCFrame es responsable de la entrada en VR.Por instancia, si un auriculare VR es responsable, el valor de esta propiedad será Enum.UserCFrame.Head .

Para verificar si Roblox detecta algún dispositivo VR, que sería responsable de la entrada en VR, puedes verificar la propiedad VREnabled.

Muestras de código

This example checks if Roblox detects a VR device. If a VR device is detected, this prints the name of the UserCFrame responsible for VR input. If not, this example prints "No VR device detected!".

VRService.GuiInputUserCFrame

local VRService = game:GetService("VRService")
if VRService.VREnabled then
print(VRService.GuiInputUserCFrame.Name)
else
print("No VR device detected!")
end
Leer paralelo

ThirdPersonFollowCamEnabled

Solo lectura
No replicado
Leer paralelo

VREnabled

Solo lectura
No replicado
Leer paralelo

Esta propiedad describe si el usuario está usando un dispositivo de realidad virtual (VR).

Si un dispositivo VR está habilitado, puedes interactuar con su ubicación y movimiento a través de métodos como UserInputService:GetUserCFrame() .También puedes reaccionar al movimiento del dispositivo VR usando el evento UserInputService.UserCFrameChanged.


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

Esta propiedad solo se puede usar en un LocalScript .

Ver también

Muestras de código

This example demonstrates how to implement a head tracking script that mirrors the movement of a virtual reality (VR) headset (the user's actual head) to their in-game character's head.

The example first check if the user is using a VR device by checking the value of the VREnabled() property. This example only works if the user is using a VR headset.

To determine the initial CFrame of the character's head, the code sample calls GetUserCFrame() and passes Enum.UserCFrame.Head as the argument.

To update the head's CFrame whenever the user's VR headset moves, the example connects the VRService.UserCFrameChanged event to the TrackHead() function. When the event fires to indicate that a VR device moved, TrackHead() checks if the headset moved. If the headset moved, the function updates the CFrame of the character's head to the CFrame value provided as an argument.

As the UserCFrame enum also tracks VR left and right hand devices, the concept of VR device tracking can be expanded to other character bodyparts.

In order for the example to work as expected, it must be placed in a 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

Métodos

GetTouchpadMode

Este método devuelve el Enum.VRTouchpadMode que indica el modo de un especificado Enum.VRTouchpad .El modo devuelto indica cómo interactúa el usuario con su tablet para jugar al juego.

También se puede utilizar junto con los varios métodos y eventos UserInputService de VR.

Este método solo funcionará cuando se use en un LocalScript .

Parámetros

El especificado VRTouchpad .

Valor predeterminado: ""

Devuelve

El modo del especificado VRTouchpad .

Muestras de código

This example retrieves and prints the name of the user's current VRTouchpad.Left touchpad mode.

VRService:GetTouchpadMode

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

GetUserCFrame

Este método devuelve un CFrame que describe la posición y orientación de un dispositivo de realidad virtual especificado como un desplazamiento desde un punto en el espacio del mundo real.Este método debe usarse al implementar la compatibilidad de VR en un juego para obtener y rastrear el movimiento de un dispositivo VR conectado.

Al usar el método, los desarrolladores pueden implementar funciones como el reposicionamiento del personaje del usuario en el juego correspondiente a la ubicación de un dispositivo VR conectado.Esto se puede hacer cambiando el CFrame del personaje del usuario en el juego para que coincida con el CFrame del dispositivo VR especificado usando los argumentos de valor de CFrame pasados por el evento.

VRService también proporciona un evento UserCFrameChanged que se activa automáticamente cuando el CFrame del dispositivo VR conectado cambia, siempre que se use en un LocalScript .

Este método solo funcionará cuando se use en un LocalScript .

Parámetros

El especificado UserCFrame .

Valor predeterminado: ""

Devuelve

Muestras de código

This example positions a part at the player's left hand, assuming Camera.HeadLocked = true

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

Este método devuelve verdadero si el dispositivo de realidad virtual especificado Enum.UserCFrame está disponible para escuchar.Se puede utilizar para determinar si un dispositivo VR específico, como Enum.UserCFrame.Head , está conectado al juego del usuario.

También se puede utilizar junto con los varios métodos y eventos UserInputService de VR.

Este método solo funcionará cuando se use en un LocalScript .

Parámetros

El tipo especificado de dispositivo VR.

Valor predeterminado: ""

Devuelve

Un booleano que indica si el dispositivo VR especificado está habilitado ( true ) o deshabilitado ( false ).

Muestras de código

This example indicates whether the UserCFrame.Head VR device is enabled or disabled for the user. If the device is enabled, this prints "VR device is enabled!". If the device is disabled, this prints "VR device is disabled!".

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

()

Este método reubica el CFrame de la cabeza del usuario en la ubicación actual del casco de VR que lleva el usuario.Se puede usar para asegurar que la cabeza del usuario en el juego esté posicionada de acuerdo con la ubicación del visorVR del usuario.

Esto se comporta de manera idéntica a UserInputService:RecenterUserHeadCFrame().

Este método solo funcionará cuando se use en un LocalScript .


Devuelve

()

Muestras de código

This example fires the function to recenter the CFrame of the user's head to the current location of the VR headset being worn by the user.

VRService:RecenterUserHeadCFrame

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

RequestNavigation

()

Este método solicita la navegación al especificado CFrame usando el especificado Enum.UserCFrame como origen para la parábola visualizadora.Se puede utilizar para incorporar la realidad virtual (VR) a tu juego proporcionando un medio para visualizar un camino de navegación desde el dispositivo VR del usuario hasta un destino.

VRService tiene un evento similar, NavigationRequested , usado para detectar tales solicitudes.También se puede utilizar junto con los varios métodos y eventos de VR UserInputService.

Este método solo funcionará cuando se use en un LocalScript .

Parámetros

cframe: CFrame

Las coordenadas especificadas CFrame .

Valor predeterminado: ""
inputUserCFrame: Enum.UserCFrame

El dispositivo VR para el que se solicita la navegación.

Valor predeterminado: ""

Devuelve

()

Muestras de código

This example requests navigation from the user's UserCFrame.Head coordinates to the CFrame coordinates of a Part named NavigationDestination.

Note: In order for this to work, a Part named NavigationDestination must exist in the game's Workspace.

VRService:RequestNavigation

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

SetTouchpadMode

()

Este método establece el modo del especificado Enum.VRTouchpad al especificado Enum.VRTouchpadMode.Se puede usar para cambiar el modo del teclado de realidad virtual (VR) del usuario para que el usuario interactúe con el juego de manera diferente usando el teclado.

También se puede utilizar junto con los varios métodos y eventos UserInputService de VR.

Este método solo funcionará cuando se use en un LocalScript .

Parámetros

El especificado VRTouchpad que quieres establecer el modo de.

Valor predeterminado: ""

El modo en el que quieres establecer el especificado VRTouchpad para.

Valor predeterminado: ""

Devuelve

()

Muestras de código

This example sets the user's VRTouchpad.Left touchpad mode to TouchMode.Touch. This means that the left touchpad is treated as ButtonB.

VRService:SetTouchpadMode

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

Eventos

Este evento se activa cuando se solicita la navegación desde VRService para un dispositivo VR especificado Enum.UserCFrame.Dispara con una coordenada CFrame y la especificada Enum.UserCFrame que indica la solicitud de dispositivo que solicita la navegación.

Este evento se puede utilizar junto con UserInputService eventos y métodos de servicio.

Dado que este evento se dispara localmente, solo se puede usar en un LocalScript .

Parámetros

cframe: CFrame

Las coordenadas solicitadas CFrame .

inputUserCFrame: Enum.UserCFrame

Indica el dispositivo VR para el que se solicita la navegación.


Muestras de código

This example prints the name of the UserCFrame VR device making the request, and the CFrame coordinates passed.

VRService.NavigationRequested

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

TouchpadModeChanged

Este evento se activa si el Enum.VRTouchpadMode de un Enum.VRTouchpad cambia.Puedes usar este evento para rastrear los estados de los pads táctiles de VR conectados a través del cliente del usuario.

Este evento se puede utilizar junto con UserInputService eventos y métodos de servicio.

Dado que este evento se dispara localmente, solo se puede usar en un LocalScript .

Parámetros

El teclado que cambió el modo.

El nuevo modo.


Muestras de código

This example fires when the state of a VRTouchpad changes. It prints the name of the Touchpad that changed, and the state that it changed to.

VRService.TouchpadModeChanged

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

UserCFrameChanged

Este evento se activa cuando se cambia un Enum.UserCFrame, por ejemplo, cuando el usuario mueve un dispositivo VR conectado.Se puede utilizar junto con GetUserCFrame() para rastrear las coordenadas CFrame de un dispositivo VR y cuando cambia/se mueve.También se puede utilizar junto con UserInputService eventos y métodos de servicio.

Dado que este evento se dispara localmente, solo se puede usar en un LocalScript .

Parámetros

El tipo de dispositivo VR que cambió.

value: CFrame

Las coordenadas actualizadas CFrame de la dispositivo VR después del cambio.


Muestras de código

This event fires when the user moves a connected VR device. When the event fires, this prints the name of the VR device type that changed, and the updated CFrame coordinates.

VRService.UserCFrameChanged

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

UserCFrameEnabled

Este evento se activa cuando un Enum.UserCFrame está habilitado o deshabilitado.Se puede usar junto con GetUserCFrameEnabled() para rastrear si se ha habilitado un UserCFrame específico y cuándo cambia su estado.También se puede utilizar junto con UserInputService eventos y métodos de servicio.

Dado que este evento se dispara localmente, solo se puede usar en un LocalScript .

Parámetros

El UserCFrame se está habilitando o deshabilitando.

enabled: boolean

Un booleano que indica si el UserCFrame está habilitado ( true ) o deshabilitado ( false ).


Muestras de código

This example fires when a UserCFrame changes state, printing the name of the changed UserCFrame and whether it changed got enabled or disabled.

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)