VRService

Pokaż przestarzałe

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Brak możliwości tworzenia
Usługa

Usługa VRService jest odpowiedzialna za obsługę interakcji między Roblox a wirtualną rzeczywistością (VR).Jego metody, właściwości i wydarzenia pomagają Ci zapewnić najlepsze doświadczenia dla użytkowników końcowych, którzy szukają doświadczenia Roblox na urządzeniach VR.

Zobacz wytyczne VR dla więcej informacji o publikacji doświadczenia dla urządzeń VR.

Przykłady kodu

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

Podsumowanie

Właściwości

Metody

Zdarzenia

Właściwości

AutomaticScaling

Odczyt równoległy

Gdy ustawiono na Enum.VRScaling.World, Camera.HeadScale dostosowuje się tak, aby skala świata była widziana z perspektywy awatara.Gracz z małym awatarem postrzega przedmioty wokół niego jako większe niż gracz z dużym awatarem.

AvatarGestures

Odczyt równoległy

Gdy ustawiono na prawdę, gracz VR będzie mógł animować ręce i głowę za pomocą swoich kontrolerów i zestaw słuchawkowy.

Właściwość ta musi być ustawiona na serwerze.

Odczyt równoległy

FadeOutViewOnCollision

Odczyt równoległy

Gdy prawda, widok gracza VR zanika do czerni, gdy jego głowa zderza się z obiektem.Właściwość ta uniemożliwia graczom widzenie przez ściany w VR.Domyślna wartość jest prawdą.

GuiInputUserCFrame

Bez replikacji
Odczyt równoległy

Właściwość ta opisuje, za co odpowiada Enum.UserCFrame wejście w VR.Na instancja, jeśli odpowiedzialny jest gogle VR, wartość tej właściwości będzie wynosić Enum.UserCFrame.Head .

Aby sprawdzić, czy Roblox wykrywa jakiekolwiek urządzenia VR, które byłyby odpowiedzialne za wejście w VR, możesz sprawdzić właściwość VREnabled.

Przykłady kodu

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
Odczyt równoległy

ThirdPersonFollowCamEnabled

Tylko do odczytu
Bez replikacji
Odczyt równoległy

VREnabled

Tylko do odczytu
Bez replikacji
Odczyt równoległy

Właściwość ta opisuje, czy użytkownik korzysta z urządzeniewirtualnej rzeczywistości (VR).

Jeśli urządzenie VR jest włączone, możesz wchodzić w interakcję z jego lokalizacją i ruchami za pomocą metod takich jak UserInputService:GetUserCFrame().Możesz również reagować na ruch urządzenia VR za pomocą wydarzenia 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

Właściwość ta może być używana tylko w LocalScript.

Zobacz także

Przykłady kodu

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

Metody

GetTouchpadMode

Ta metoda zwraca Enum.VRTouchpadMode wskazującą tryb określonego Enum.VRTouchpad .Powrócony tryb wskazuje, w jaki sposób użytkownik interakuje z ich touchpadem, aby grać w grę.

Można go również używać obok kilku metod i wydarzeń VR UserInputService.

Ta metoda będzie działać tylko wtedy, gdy zostanie użyta w LocalScript.

Parametry

Wskazany VRTouchpad .

Wartość domyślna: ""

Zwroty

Tryb określonego VRTouchpad .

Przykłady kodu

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

Ta metoda zwraca CFrame opisującą pozycję i orientację określonego urządzenia wirtualnej rzeczywistości (VR) jako odległość od punktu w przestrzeni realnego świata.Ta metoda powinna być stosowana podczas wdrażania kompatybilności VR w grze, aby uzyskać i śledzić ruch połączonego urządzenieVR.

Używając metody, programiści mogą wdrożyć funkcje, takie jak ponowne umieszczenie postaci użytkownika w grze odpowiadającej lokalizacji połączonego urządzenieVR.Można to zrobić, zmieniając CFrame postaci użytkownika w grze do dopasowania do CFrame określonego urządzenia VR za pomocą argumentów wartości CFrame przekazanych przez wydarzenie.

VRService również zapewnia wydarzenie UserCFrameChanged, które automatycznie się uruchamia, gdy zmienia się CFrame złączone urządzenie VR, tak długo, jak jest używane w LocalScript .

Ta metoda będzie działać tylko wtedy, gdy zostanie użyta w LocalScript.

Parametry

Wskazany UserCFrame .

Wartość domyślna: ""

Zwroty

Przykłady kodu

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

Ta metoda zwraca prawdę, jeśli określone urządzenie wirtualnej rzeczywistości Enum.UserCFrame jest dostępne do wysłuchania.Można go użyć do określenia, czy określone urządzenie VR, takie jak Enum.UserCFrame.Head, jest podłączone do graużytkownika.

Można go również używać obok kilku metod i wydarzeń VR UserInputService.

Ta metoda będzie działać tylko wtedy, gdy zostanie użyta w LocalScript.

Parametry

Wskazany typ urządzenieVR.

Wartość domyślna: ""

Zwroty

Boolean wskazujący, czy określone urządzenie VR jest włączone ( true ) lub wyłączone ( false ).

Przykłady kodu

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

()

Ta metoda ponownie skupia CFrame głowę użytkownika w obecnej lokalizacji gogle VR noszone przez użytkownika.Można go użyć, aby upewnić się, że głowa użytkownika w grze jest skierowana zgodnie z lokalizacją głowy VR użytkownika.

Zachowuje się identycznie do UserInputService:RecenterUserHeadCFrame().

Ta metoda będzie działać tylko wtedy, gdy zostanie użyta w LocalScript.


Zwroty

()

Przykłady kodu

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

()

Ta metoda żąda nawigacji do określonego CFrame używając określonego Enum.UserCFrame jako źródła dla paraboli wizualizera.Można go użyć do włączenia wirtualnej rzeczywistości (VR) do twojej gry, zapewniając sposób na wizualizację ścieżki nawigacyjnej z urządzenia VR użytkownika do celu.

VRService ma podobne wydarzenie, NavigationRequested, używane do wykrywania takich żądań.Można go również używać obok kilku metod i wydarzeń VR UserInputService.

Ta metoda będzie działać tylko wtedy, gdy zostanie użyta w LocalScript.

Parametry

cframe: CFrame

Wskazane koordynaty CFrame .

Wartość domyślna: ""
inputUserCFrame: Enum.UserCFrame

Urządzenie VR, dla którego wymagana jest nawigacja.

Wartość domyślna: ""

Zwroty

()

Przykłady kodu

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

()

Ta metoda ustawia tryb określonego Enum.VRTouchpad na określony Enum.VRTouchpadMode.Można go używać, aby zmienić tryb klawiatury wirtualnej rzeczywistości użytkownika (VR), tak aby użytkownik interakował z grą w inny sposób za pomocą klawiatury.

Można go również używać obok kilku metod i wydarzeń VR UserInputService.

Ta metoda będzie działać tylko wtedy, gdy zostanie użyta w LocalScript.

Parametry

Wskazany VRTouchpad chcesz ustawić tryb.

Wartość domyślna: ""

Tryb, na który chcesz ustawić określone VRTouchpad .

Wartość domyślna: ""

Zwroty

()

Przykłady kodu

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)

Zdarzenia

To wydarzenie wystrzeliwuje się, gdy wymagana jest nawigacja z VRService dla określonego urządzenia VR Enum.UserCFrame.Strzela z koordynatami CFrame i określonym Enum.UserCFrame wskazującym urządzenie żądające nawigacji.

To wydarzenie można łączyć z wydarzeniami i metodami usług UserInputService.

Ponieważ to wydarzenie wystrzeliwuje lokalnie, może być używane tylko w LocalScript.

Parametry

cframe: CFrame

Żądane CFrame.

inputUserCFrame: Enum.UserCFrame

Wskazuje urządzenie VR, dla którego wymagana jest nawigacja.


Przykłady kodu

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

To wydarzenie wystrzeliwuje się, jeśli Enum.VRTouchpadMode zmieni się w Enum.VRTouchpad .Możesz użyć tego wydarzenia, aby śledzić stany touchpadów VR połączonych za pośrednictwem klienta użytkownika.

To wydarzenie można łączyć z wydarzeniami i metodami usług UserInputService.

Ponieważ to wydarzenie wystrzeliwuje lokalnie, może być używane tylko w LocalScript.

Parametry

Touchpad, który zmienił tryb.

Nowy tryb.


Przykłady kodu

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

To wydarzenie wystrzeliwuje się, gdy zostanie zmieniony Enum.UserCFrame na przykład, gdy użytkownik przenosi połączone urządzenie VR.Można go używać obok GetUserCFrame() śledzić koordynaty CFrame urządzenia VR, gdy się zmienia/przesuwa.Może być również używany wraz z wydarzeniami i metodami usług UserInputService.

Ponieważ to wydarzenie wystrzeliwuje lokalnie, może być używane tylko w LocalScript.

Parametry

Typ urządzenia VR, który się zmienił.

value: CFrame

Zaktualizowane CFrame koordynaty urządzenia VR po zmianie.


Przykłady kodu

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

To wydarzenie wystrzeliwuje się, gdy włączono lub wyłączono Enum.UserCFrame .Można go używać obok GetUserCFrameEnabled(), aby śledzić, czy włączono określone UserCFrame, a kiedy zmienia się jego stan.Może być również używany wraz z wydarzeniami i metodami usług UserInputService.

Ponieważ to wydarzenie wystrzeliwuje lokalnie, może być używane tylko w LocalScript.

Parametry

Włączanie lub wyłączanie UserCFrame dostępne.

enabled: boolean

Boolean wskazujący, czy UserCFrame jest włączone ( true ) lub wyłączone ( false ).


Przykłady kodu

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)