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

VRService jest odpowiedzialny za przetwarzanie interakcji między Roblox i Virtual Reality (VR). Jego metody, właściwości i wydarzenia pomagają Ci dostarczyć najlepszych doświadczeń dla użytkowników końcowych szukających doświadczenia Roblox na urządzeniach VR.

Zobacz linie kierunkowe VR dla więcej informacji na temat 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

Właściwości

AutomaticScaling

Odczyt równoległy

Gdy ustawiony na Enum.VRScaling.World , Camera.HeadScale dostosuje się, aby skala świata była widoczna z punktu widzenia awatara. Gracz z małym awatarem będzie postrzegać obiekty wokół nich jako większe niż gracz z dużym awatarem.

AvatarGestures

Odczyt równoległy

Gdy ustawiony na prawdę, gracz VR będzie w stanie animować swoje ręce i głowę za pomocą swojego kontrolera i zestaw słuchawkowy.

Ta właściwość musi być ustawiona na serwerze.

Odczyt równoległy

FadeOutViewOnCollision

Odczyt równoległy

Gdy prawda, widok gracza VR zanika czarny, gdy ich głowa koliduje z obiektem. Ta właściwość zapobiega graczom widzieć poprzez ściany podczas VR. Domyślną wartość jest prawda.

GuiInputUserCFrame

Bez replikacji
Odczyt równoległy

Ta właściwość opisuje to, co Enum.UserCFrame jest odpowiedzialny za wejście w VR. Na instancja, jeśli kaseta VR jest odpowiedzialna, wartość tej właściwości będzie Enum.UserCFrame.Head.

Aby sprawdzić, czy Roblox wykryje jakiekolwiek VR-urządzenie, które będzie odpowiadać za wejście w VR, można 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

To właściwość opisuje, czy użytkownik używa urządzeniewirtualnej rzeczywistości (VR).

Jeśli urządzenie VR jest włączone, możesz z nim interagować poprzez metody, takie jak UserInputService:GetUserCFrame() . Możesz również reagować na ruch urządzenia VR poprzez wydarzenie 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 również

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

Ten metod returnuje Enum.VRTouchpadMode wskazując tryb określonego Enum.VRTouchpad . W trybie zwróconym wskazuje, jak użytkownik wchodzi w interakcję ze swoim touchpad, aby grać w grę.

Można go również używać wraz z kilkoma metodami i wydarzeniami UserInputService VR.

Ten metod działa tylko w LocalScript .

Parametry


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

Ten metod return a CFrame opisujący pozycję i orientację określonego urządzenia wirtualnej rzeczywistości (VR) jako odchylenie od punktu w przestrzeni świata rzeczywistego. Ten metod powinien być używany, gdy wdrożono kompatybilność VR w grze, aby uzyskać i śledzić ruch połączonego urządzenieVR.

Używając metody, rozwójcy mogą implementować funkcje, takie jak ponowne położenie pozycji użytkownika odpowiadającej lokalizacji połączonego urządzenieVR. To można zrobić poprzez zmianę CFrame użytkownika w grze, aby pasował do CFrame określonego urządzenia VR za pomocą argumentów

VRService dostarcza również wydarzenie UserCFrameChanged, które automatycznie się uruchamia, gdy CFrame VR urządzenia połączonego zmienia się, tak długo, jak jest używany w 0> Class.LocalScript0> .

Ten metod działa tylko w LocalScript .

Parametry

Specjalny UserCFrame .


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

Ten metod return true if the specified Enum.UserCFrame wirtualny reality device (VR) jest dostępny do słuchania. Można go użyć do określenia, czy określony VR urządzenie, takie jak Enum.UserCFrame.Head , jest połączony z graużytkownika.

Można go również używać wraz z kilkoma metodami i wydarzeniami UserInputService VR.

Ten metod działa tylko w LocalScript .

Parametry

Wskazany typ urządzenieVR.


Zwroty

Boolean wskazujący, czy określony urząd VR jest włączony ( true ) lub wyłączony ( 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

void

Ten metod re-centruje CFrame użytkownika głowy na obecną lokalizację noszonego przez użytkownika VR-headset. Można go użyć do zapewnienia, że użytkownik w grze ma ustawioną głowę zgodnie ze lokalizacją noszonego przez użytkownika zestaw słuchawkowy.

Zachowuje się identycznie do UserInputService:RecenterUserHeadCFrame() .

Ten metod działa tylko w LocalScript .


Zwroty

void

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

void

Ten metodą prosi o nawigację do określonego CFrame używającym określonego Enum.UserCFrame jako źródła dla wizualizera parabola. Można go użyć do zintegrowania wirtualnej rzeczywistości (VR) w swojej grze poprzez zapewnienie środka do wizualizacji drogi nawigacji z urządzenia użytkownika do celu.

VRService ma podobne wydarzenie, NavigationRequested, używane do wykrywania takich wniosków. Można również używać go wraz z kilku metodami i wydarzeniami VR UserInputService.

Ten metod działa tylko w LocalScript .

Parametry

cframe: CFrame

Wskazane CFrame koordynaty.

inputUserCFrame: Enum.UserCFrame

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


Zwroty

void

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

void

Ten metod ustawia tryb określonego Enum.VRTouchpad na tryb Enum.VRTouchpadMode. Można go użyć do zmiany trybu wirtualnej rzeczywistości użytkownika (VR), aby użytkownik wchodził w interakcję z grą za pomocą touchpadu.

Można go również używać wraz z kilkoma metodami i wydarzeniami UserInputService VR.

Ten metod działa tylko w LocalScript .

Parametry

Specjalny VRTouchpad ustawisz tryb.

Tryb, w którym chcesz ustawić określony VRTouchpad .


Zwroty

void

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

Ten wąż pojawia się, gdy prośba o nawigację jest wysłana z VRService dla określonego urządzenia VR. Występuje z Enum.UserCFrame koordynatorem i CFrame wskazującym na urządzenie proszące o nawigację.

Ten wątek może być używany wraz z wydarzeniami UserInputService i metodami.

Ponieważ ten wątek działa lokalnie, można go używać tylko w LocalScript .

Parametry

cframe: CFrame

Proszone CFrame koordynaty.

inputUserCFrame: Enum.UserCFrame

Wskazuje urządzenie VR dla którego prosi o nawigację.


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

Ten ewent zostanie wywołany, jeśli Enum.VRTouchpadMode z Enum.VRTouchpad zostanie zmieniony. Możesz użyć tego ewentu do śledzenia stanów dotykowych VR touchpadów połączonych za pośrednictwem klienta użytkownika.

Ten wątek może być używany wraz z wydarzeniami UserInputService i metodami.

Ponieważ ten wątek działa lokalnie, można go używać 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

Ten wąż pojawia się, gdy Enum.UserCFrame jest zmieniany, na przykład gdy użytkownik porusza powiązany urządzenieVR. Można go używać wraz z GetUserCFrame() , aby śledzić koordynaty Datatype.C

Ponieważ ten wątek działa lokalnie, można go używać tylko w LocalScript .

Parametry

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

value: CFrame

Aktualizowane 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

Ten ewent zostanie wywołany, gdy Enum.UserCFrame jest włączony lub wyłączony. Można go używać obok GetUserCFrameEnabled() do śledzenia, czy UserCFrame jest włączony, a g

Ponieważ ten wątek działa lokalnie, można go używać tylko w LocalScript .

Parametry

The UserCFrame getting enabled or disabled.

enabled: bool

Boolean wskazujący, czy UserCFrame jest włączony ( true ) lub wyłączony ( 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)