VRService

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável
Serviço

Serviço VR é responsável por lidar com interações entre Roblox e Realidade Virtual (VR).Seus métodos, propriedades e eventos ajudam você a fornecer a melhor experiência para usuários finais que buscam experimentar o Roblox em dispositivos VR.

Veja Diretrizes de VR para mais informações sobre a publicação de uma experiência 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.

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

Resumo

Propriedades

Métodos

Eventos

Propriedades

AutomaticScaling

Ler Parallel

Quando definido para Enum.VRScaling.World , Camera.HeadScale ajusta para que a escala do mundo seja vista da perspectiva do avatar.Um jogador com um pequeno avatar perceberá os objetos ao redor deles como maiores do que um jogador com um avatar grande.

AvatarGestures

Ler Parallel

Quando definido como verdadeiro, um jogador de VR será capaz de animar suas mãos e cabeça usando seus controladores e óculosde ouvido.

Essa propriedade deve ser definida no servidor.

Ler Parallel

FadeOutViewOnCollision

Ler Parallel

Quando verdadeiro, a visão de um jogador de VR desaparece para preto quando sua cabeça colide com um Objeto.Essa propriedade impede que os jogadores possam ver através das paredes enquanto estiverem na VR.O valor padrão é verdadeiro.

GuiInputUserCFrame

Não replicado
Ler Parallel

Essa propriedade descreve o que Enum.UserCFrame é responsável pela entrada na VR.Por instância, se um fone de ouvido VR for responsável, o valor dessa propriedade será Enum.UserCFrame.Head .

Para verificar se o Roblox detecta quaisquer dispositivos VR, que seriam responsáveis ​​pela entrada em VR, você pode verificar a propriedade 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!".

VRService.GuiInputUserCFrame

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

ThirdPersonFollowCamEnabled

Somente leitura
Não replicado
Ler Parallel

VREnabled

Somente leitura
Não replicado
Ler Parallel

Essa propriedade descreve se o usuário está usando um dispositivo de realidade virtual (VR).

Se um dispositivo VR estiver habilitado, você pode interagir com sua localização e movimento através de métodos como UserInputService:GetUserCFrame().Você também pode reagir ao movimento do dispositivo VR usando o 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

Essa propriedade só pode ser usada em um LocalScript .

Veja também

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.

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 retorna o Enum.VRTouchpadMode indicando o modo de um especificado Enum.VRTouchpad .O modo retornado indica como o usuário interage com seu touchpad para jogar o jogo.

Isso também pode ser usado ao lado dos vários métodos e eventos UserInputService.

Este método só funcionará quando usado em um LocalScript .

Parâmetros

O especificado VRTouchpad .

Valor Padrão: ""

Devolução

O modo do especificado VRTouchpad .

Amostras 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 retorna um CFrame descrevendo a posição e orientação de um dispositivo de realidade virtual especificado como um deslocamento a partir de um ponto no espaço do mundo real.Este método deve ser usado ao implementar a compatibilidade de VR em um jogo para obter e rastrear o movimento de um dispositivo VR conectado.

Ao usar o método, os desenvolvedores podem implementar recursos como o reposicionamento do personagem do usuário no jogo correspondente à localização de um dispositivo VR conectado.Isso pode ser feito alterando o CFrame do personagem do usuário no jogo para combinar com o CFrame do dispositivo VR especificado usando os argumentos de valor da enumeração UserCFrame e CFrame transmitidos pelo evento.

VRService também fornece um evento UserCFrameChanged que atira automaticamente quando o CFrame do dispositivo VR conectado muda, desde que seja usado em um LocalScript .

Este método só funcionará quando usado em um LocalScript .

Parâmetros

O especificado UserCFrame .

Valor Padrão: ""

Devolução

Amostras 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 retorna verdadeiro se o dispositivo de realidade virtual especificado Enum.UserCFrame estiver disponível para ser ouvido.Pode ser usado para determinar se um dispositivo VR especificado, como Enum.UserCFrame.Head, está conectado ao jogo do usuário.

Isso também pode ser usado ao lado dos vários métodos e eventos UserInputService.

Este método só funcionará quando usado em um LocalScript .

Parâmetros

O tipo especificado de dispositivo VR.

Valor Padrão: ""

Devolução

Um booleano que indica se o dispositivo VR especificado está ativado ( true ) ou desativado ( 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!".

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 reposiciona o CFrame da cabeça do usuário na localização atual do fone de ouvido VR que o usuário está usando.Pode ser usado para garantir que a cabeça do usuário no jogo esteja posicionada de acordo com a localização do headset VR do usuário.

Isso se comporta de forma idêntica a UserInputService:RecenterUserHeadCFrame().

Este método só funcionará quando usado em um 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.

VRService:RecenterUserHeadCFrame

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

RequestNavigation

()

Este método solicita navegação para o especificado CFrame usando o especificado Enum.UserCFrame como origem para a parábola visualizadora.Pode ser usado para incorporar realidade virtual (VR) em seu jogo fornecendo um meio de visualizar um caminho de navegação do dispositivo VR do usuário para um destino.

VRService tem um evento similar, NavigationRequested, usado para detectar tais solicitações.Isso também pode ser usado ao lado dos vários métodos e eventos VR UserInputService.

Este método só funcionará quando usado em um LocalScript .

Parâmetros

cframe: CFrame

As coordenadas especificadas CFrame .

Valor Padrão: ""
inputUserCFrame: Enum.UserCFrame

O dispositivo VR para o qual a navegação é solicitada.

Valor Padrão: ""

Devolução

()

Amostras de código

Este exemplo solicita navegação das coordenadas do usuário UserCFrame.Head para as coordenadas do CFrame de um Part chamado Destino de Navegação.

Nota: Para que isso funcione, uma Parte chamada Destino de Navegação deve existir no Espaço de Trabalho do jogo.

Serviço VR: Solicitar Navegação

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

SetTouchpadMode

()

Este método define o modo do especificado Enum.VRTouchpad para o especificado Enum.VRTouchpadMode.Pode ser usado para alterar o modo do touchpad de realidade virtual (VR) do usuário para que o usuário interaja com o jogo de forma diferente usando o touchpad.

Isso também pode ser usado ao lado dos vários métodos e eventos UserInputService.

Este método só funcionará quando usado em um LocalScript .

Parâmetros

O especificado VRTouchpad você quer definir o modo de.

Valor Padrão: ""

O modo que você deseja definir o especificado VRTouchpad para.

Valor Padrão: ""

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.

VRService:SetTouchpadMode

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

Eventos

Este evento é disparado quando a navegação é solicitada de para um dispositivo VR especificado.Dispara com uma coordenada CFrame e o especificado Enum.UserCFrame indicando o dispositivo que solicita a navegação.

Este evento pode ser usado ao lado de UserInputService.

Como este evento é disparado localmente, ele só pode ser usado em um LocalScript .

Parâmetros

cframe: CFrame

As coordenadas solicitadas CFrame pedidas.

inputUserCFrame: Enum.UserCFrame

Indica o dispositivo VR para o qual a navegação é solicitada.


Amostras 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 dispara se o Enum.VRTouchpadMode de um Enum.VRTouchpad for alterado.Você pode usar esse evento para rastrear os estados dos tocadores VR conectados via o cliente do usuário.

Este evento pode ser usado ao lado de UserInputService.

Como este evento é disparado localmente, ele só pode ser usado em um LocalScript .

Parâmetros

O touchpad que mudou o modo.

O novo 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.

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 dispara quando um Enum.UserCFrame é alterado, por exemplo, quando o usuário move um dispositivo VR conectado.Pode ser usado ao lado de GetUserCFrame() para rastrear as coordenadas CFrame de um dispositivo VR e quando ele muda/muda.Também pode ser usado ao lado de UserInputService eventos e métodos de serviço.

Como este evento é disparado localmente, ele só pode ser usado em um LocalScript .

Parâmetros

O tipo de dispositivo VR que mudou.

value: CFrame

As coordenadas atualizadas CFrame do dispositivo VR após a alteração.


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.

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 dispara quando um Enum.UserCFrame é ativado ou desativado.Pode ser usado ao lado de GetUserCFrameEnabled() para rastrear se um UserCFrame especificado está habilitado e quando seu estado muda.Também pode ser usado ao lado de UserInputService eventos e métodos de serviço.

Como este evento é disparado localmente, ele só pode ser usado em um LocalScript .

Parâmetros

O UserCFrame obter habilitado ou desativado.

enabled: boolean

Um booleano que indica se o UserCFrame é habilitado ( true ) ou desabilitado ( 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.

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)