VRService
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
VRService es responsable de manejar las interacciones entre Roblox y Virtual Reality (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.
Vea Directrices VR para obtener más información sobre la publicación de una experiencia para dispositivos VR.
Amostras 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.
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
Resumo
Propriedades
Ajusta automáticamente el escalado en VR para alinear al jugador con su avatar.
Cuando sea así, un jugador VR podrá animar sus manos y cabeza usando sus controles y visor.
Cuando es cierto, la vista de un jugador VR se desvanecerá cuando su cabeza se choque con un objeto.
Describe lo que Enum.UserCFrame es responsable de la entrada en VR.
Describe si el usuario está utilizando un dispositivo de realidad virtual.
Métodos
Regresa el modo VRTouchpadMode que indica el modo de un VRTouchpad especificado.
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.
Regresa true si el Enum.UserCFrame especificado está disponible para escuchar.
Re-centra el CFrame a la ubicación actual del VR headset que se lleva el usuario.
Solicita la navegación a la especificación CFrame usando la especificación Enum.UserCFrame como la base para la parabola del visualizador.
Establece el modo del Enum.VRTouchpad especificado en el Enum.VRTouchpadMode especificado.
Eventos
Se ha disparado cuando se solicita la navegación desde VRService .
Dispara si el En modo de un En modo es cambiado.
Se activa cuando se cambia un Enum.UserCFrame
Se activa cuando se habilita o deshabilita Enum.UserCFrame.
Propriedades
AutomaticScaling
Cuando se establece en Enum.VRScaling.World, Camera.HeadScale ajusta para que se vea el tamaño del mundo desde la perspectiva del avatar. Un jugador con un pequeño avatar percibirá los objetos alrededor de ellos como más grandes que un jugador con un gran avatar.
AvatarGestures
Cuando esté configurado como verdadero, un jugador VR podrá animar sus manos y cabeza usando sus controles y visor.
Esta propiedad debe establecerse en el servidor.
ControllerModels
FadeOutViewOnCollision
Cuando es verdad, la vista de un jugador VR se desvanecerá cuando su cabeza se choque 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 verdadero.
GuiInputUserCFrame
Esta propiedad describe lo que Enum.UserCFrame es responsable de la entrada en VR. Por instancia, si un auriculares VR es responsable, el valor de esta propiedad será Enum.UserCFrame.Head .
Para ver si Roblox detecta algún dispositivo VR, que sería responsable de la entrada en VR, puede ver la propiedad VREnabled .
Amostras 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!".
local VRService = game:GetService("VRService")
if VRService.VREnabled then
print(VRService.GuiInputUserCFrame.Name)
else
print("No VR device detected!")
end
LaserPointer
ThirdPersonFollowCamEnabled
VREnabled
Esta propiedad describe si el usuario está usando un dispositivo de realidad virtual (VR).
Si se habilita un dispositivo VR, puede interactuar con su ubicación y movimiento a través de métodos como UserInputService:GetUserCFrame() . También puede reaccionar a los movimientos del dispositivo VR usando el evento UserInputService.UserCFrameChanged .
local UserInputService = game:GetService("UserInputService")local isUsingVR = UserInputService.VREnabledif isUsingVR thenprint("User is using a VR headset!")elseprint("User is not using a VR headset!")end
Esta propiedad solo se puede usar en un LocalScript .
Ver también
Amostras 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.
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返回enum.VRTouchpadMode indicando el modo de un Enum.VRTouchpadMode especificado. El modo devuelta indica cómo el usuario interactúa con su touchpad para jugar el juego.
Esto también se puede utilizar junto con varios métodos y eventos de UserInputService VR.
Este método solo funcionará cuando se use en un LocalScript .
Parâmetros
El especificado VRTouchpad .
Devolução
El modo del VRTouchpad especificado.
Amostras de código
This example retrieves and prints the name of the user's current VRTouchpad.Left touchpad mode.
local VRService = game:GetService("VRService")
VRService:GetTouchpadMode(Enum.VRTouchpad.Left)
GetUserCFrame
Este método返回一个 CFrame que describe la posición y orientación de un dispositivo de realidad virtual (VR) especificado como un desplazamiento desde un punto en el espacio del mundo real. Este método debería用于实现游戏中的 VR 兼容性以获得并跟踪连接的虚拟现实设备的移动。
Al usar el método, los desarrolladores pueden implementar características como reposicionar el personaje del usuario en el juego que coincida con 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 la ubicación del dispositivo VR especificado usando los argumentos de CFrame y CFrame de la lista de argumentos de usuario.
VRService también proporciona un evento UserCFrameChanged que se activa automáticamente cuando el CFrame de un dispositivo VR conectado cambia, siempre que se use en un 0> Class.LocalScript0> .
Este método solo funcionará cuando se use en un LocalScript .
Parâmetros
El especificado UserCFrame .
Devolução
Amostras de código
This example positions a part at the player's left hand, assuming Camera.HeadLocked = true
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 true si el dispositivo de realidad virtual especificado (VR) está disponible para ser escuchado. Se puede usar para determinar si un dispositivo de VR especificado, como Enum.UserCFrame, está conectado a la interfaz del usuario.
Esto también se puede utilizar junto con varios métodos y eventos de UserInputService VR.
Este método solo funcionará cuando se use en un LocalScript .
Parâmetros
El tipo especificado de dispositivo VR.
Devolução
Un valor deBooleano que indica si el dispositivo VR especificado está habilitado ( true ) o no ( false ).
Amostras 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!".
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 reubicará el CFrame del usuario a la ubicación actual del auriculares VR que lleva el usuario. Se puede usar para asegurar que la cabeza del usuario en el juego esté posicionada según la ubicación de su visorVR.
Esto se comporta idénticamente a UserInputService:RecenterUserHeadCFrame() .
Este método solo funcionará cuando se use en un LocalScript .
Devolução
Amostras 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.
local VRService = game:GetService("VRService")
VRService:RecenterUserHeadCFrame()
RequestNavigation
Este método solicita la navegación a la especificación CFrame usando el método especificado Enum.UserCFrame como el origen para la parabola visualizadora. Se puede usar para incorporar la realidad virtual (VR) en su juego proporcionando un medio para visualizar un camino de navegación desde el dispositivo VR del usuario a un destino.
VRService tiene un evento similar, NavigationRequested, utilizado para detectar tales solicitudes. Esto también se puede utilizar junto con varios métodos y eventos de VR de varios UserInputService.
Este método solo funcionará cuando se use en un LocalScript .
Parâmetros
El dispositivo VR para el que se solicita la navegación.
Devolução
Amostras 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.
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 Enum.VRTouchpad especificado en el Enum.VRTouchpadMode especificado. Se puede usar para cambiar el modo del Ensamblador.VRTouchpad touchpad del usuario para que el usuario interactúe con el juego de forma diferente usando el touchpad.
Esto también se puede utilizar junto con varios métodos y eventos de UserInputService VR.
Este método solo funcionará cuando se use en un LocalScript .
Parâmetros
El modo especificado VRTouchpad que quieres establecer.
El modo en que desea establecer el especificado VRTouchpad a.
Devolução
Amostras 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.
local VRService = game:GetService("VRService")
VRService:SetTouchpadMode(Enum.VRTouchpad.Left, Enum.VRTouchpadMode.Touch)
Eventos
NavigationRequested
Este evento se activa cuando se solicita la navegación desde VRService para un dispositivo VR especificado. Se activa con una coordenada de Enum.UserCFrame y la especificación de CFrame que indica el dispositivo solicitando la navegación.
Este evento se puede utilizar junto con los eventos y métodos de servicio de UserInputService .
Dado que este evento se activa localmente, solo se puede usar en un LocalScript .
Parâmetros
Indica el dispositivo VR para el que se solicita la navegación.
Amostras de código
This example prints the name of the UserCFrame VR device making the request, and the CFrame coordinates passed.
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 es cambiado. Puedes usar este evento para rastrear los estados de los VR touchpads conectados a través del cliente del usuario.
Este evento se puede utilizar junto con los eventos y métodos de servicio de UserInputService .
Dado que este evento se activa localmente, solo se puede usar en un LocalScript .
Parâmetros
El panel táctil que cambió de modo.
El nuevo modo.
Amostras 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.
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 de CFrame de un dispositivo VR,
Dado que este evento se activa localmente, solo se puede usar en un LocalScript .
Parâmetros
El tipo de dispositivo VR que cambió.
Amostras 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.
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 se habilita o deshabilita un Enum.UserCFrame. Puede usarse junto con GetUserCFrameEnabled() para rastrear si se habilita o se deshabilita un UserCFrame específico. También se puede usar junto con los eventos y métodos de serv
Dado que este evento se activa localmente, solo se puede usar en un LocalScript .
Parâmetros
El UserCFrame está siendo habilitado o deshabilitado.
Un valor deBooleano que indica si el UserCFrame está habilitado ( true ) o deshabilitado ( false).
Amostras 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.
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)