VRService
*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.
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.
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
Automatycznie dostosowuje skalowanie w VR, aby dostosować gracza do jego awatara.
Gdy prawda, gracz VR będzie mógł animować ręce i głowę za pomocą swoich kontrolerów i zestaw słuchawkowy.
Gdy prawda, widok gracza VR zaniknie do czerni, gdy jego głowa zderzy się z obiektem.
Opisuje, za co Enum.UserCFrame jest odpowiedzialny za wpis w VR.
Opisuje, czy użytkownik korzysta z urządzeniewirtualnej rzeczywistości.
Metody
Zwraca VRTouchpadMode wskazujący na tryb określonego VRTouchpad.
Zwraca CFrame opisujący pozycję i orientację określonego urządzenia wirtualnej rzeczywistości jako odległość od punktu w przestrzeni rzeczywistego świata.
Zwraca prawdę, jeśli określone Enum.UserCFrame jest dostępne do wysłuchania.
Przesuwa CFrame do obecnej lokalizacji słuchawki VR noszonej przez użytkownika.
Żądania nawigacji do określonego CFrame używając określonego Enum.UserCFrame jako źródła dla paraboli wizualizera.
Ustawia tryb określonego Enum.VRTouchpad na określony Enum.VRTouchpadMode.
Zdarzenia
Wystrzeliwany, gdy wymagana jest nawigacja z VRService.
Wypala, jeśli Enum.VRTouchpadMode zmieni się w Enum.VRTouchpad .
Wypala się, gdy zmieniony zostanie Enum.UserCFrame .
Wystrzeliwuje, gdy włączono lub wyłączono Enum.UserCFrame .
Właściwości
AutomaticScaling
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
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.
ControllerModels
FadeOutViewOnCollision
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
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!".
local VRService = game:GetService("VRService")
if VRService.VREnabled then
print(VRService.GuiInputUserCFrame.Name)
else
print("No VR device detected!")
end
LaserPointer
ThirdPersonFollowCamEnabled
VREnabled
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.VREnabledif isUsingVR thenprint("User is using a VR headset!")elseprint("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.
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 .
Zwroty
Tryb określonego VRTouchpad .
Przykłady kodu
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
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 .
Zwroty
Przykłady kodu
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
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.
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!".
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.
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
Urządzenie VR, dla którego wymagana jest nawigacja.
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.
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.
Tryb, na który chcesz ustawić określone VRTouchpad .
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.
local VRService = game:GetService("VRService")
VRService:SetTouchpadMode(Enum.VRTouchpad.Left, Enum.VRTouchpadMode.Touch)
Zdarzenia
NavigationRequested
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
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.
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.
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ł.
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.
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.
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.
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)