VRService
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
VRService ist verantwortlich für die Interaktion zwischen Roblox und virtueller Realität (VR).Seine Methoden, Eigenschaften und Ereignisse helfen Ihnen, das beste Erlebnis für Endbenutzer zu bieten, die Roblox auf VR-Geräten erleben möchten.
Siehe VR-Richtlinien für weitere Informationen zur Veröffentlichung eines Erlebnisses für VR-Geräte.
Code-Beispiele
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
Zusammenfassung
Eigenschaften
Zur Anpassung der Skalierung in VR, um den Spieler mit seinem Avatar auszurichten.
Wenn es wahr ist, kann ein VR-Spieler seine Hände und seinen Kopf mit seinen Controllern und seinem Headset animieren.
Wenn es wahr ist, wird die Ansicht eines Spieler:inschwarz verschwinden, wenn sein Kopf mit einem Objekt kollidiert.
Beschreibt, was Enum.UserCFrame für die Eingabe in VR verantwortlich ist.
Beschreibt, ob der Benutzer ein virtuelles Gerätverwendet.
Methoden
Gibt den VRTouchpad-Modus zurück, der den Modus eines bestimmten VRTouchpad anzeigt.
Gibt eine CFrame zurück, die die Position und Ausrichtung eines bestimmten virtuellen Realitätsgeräts als Versatz von einem Punkt im Platzbeschreibt.
Gibt wahr zurück, wenn das angegebene Enum.UserCFrame verfügbar ist, um zuzuhören.
Zentriert das CFrame erneut auf den aktuellen Standort des VR-Headsets, das vom Benutzer getragen wird.
Anfragen zur Navigation zum angegebenen CFrame mit der angegebenen Enum.UserCFrame als Ursprung für die Visualizer-Parabole.
Legt den Modus des angegebenen Enum.VRTouchpad auf den angegebenen Enum.VRTouchpadMode fest.
Ereignisse
Feuert, wenn die Navigation von VRService angefordert wird.
Feuert, wenn das Enum.VRTouchpadMode von einem Enum.VRTouchpad geändert wird.
Feuert, wenn ein Enum.UserCFrame geändert wird.
Feuert, wenn ein Enum.UserCFrame aktiviert oder deaktiviert ist.
Eigenschaften
AutomaticScaling
Wenn es auf Enum.VRScaling.World eingestellt ist, passt Camera.HeadScale so an, dass die Größe der Welt aus der Perspektive des Avatars gesehen wird.Ein Spieler mit einem kleinen Avatar wird die Objekte um ihn herum als größer wahrnehmen als ein Spieler mit einem großen Avatar.
AvatarGestures
Wenn auf wahr gesetzt, kann ein VR-Spieler seine Hände und seinen Kopf mit seinen Controllern und seinem Headset animieren.
Diese Eigenschaft muss auf dem Server festgelegt werden.
ControllerModels
FadeOutViewOnCollision
Wenn es wahr ist, verbleicht die Ansicht eines Spieler:inschwarz, wenn sein Kopf mit einem Objekt kollidiert.Diese Eigenschaft verhindert, dass Spieler durch Wände sehen können, während sie sich in VR befinden.Der Standardwert ist true.
GuiInputUserCFrame
Diese Eigenschaft beschreibt, was Enum.UserCFrame für die Eingabe in VR verantwortlich ist.Wenn zum Instanzein VR-Headset verantwortlich ist, wird der Wert dieser Eigenschaft Enum.UserCFrame.Head sein.
Um zu überprüfen, ob Roblox irgendeine VR-Geräte erkennt, die für die Eingabe in VR verantwortlich wären, kannst du die EigenschaftenVREnabled überprüfen.
Code-Beispiele
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
Diese Eigenschaft beschreibt, ob der Benutzer ein virtuelles Gerät(VR) verwendet.
Wenn ein VR-Gerät aktiviert ist, kannst du mit seiner Position und Bewegung durch Methoden wie UserInputService:GetUserCFrame() interagieren.Du kannst auch auf die Bewegung des VR-Geräts mit dem UserInputService.UserCFrameChanged-Ereignis reagieren.
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
Diese Eigenschaft kann nur in einem LocalScript verwendet werden.
Siehe auch
Code-Beispiele
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
Methoden
GetTouchpadMode
Diese Methode gibt die Enum.VRTouchpadMode zurück, die den Modus eines bestimmten Enum.VRTouchpad anzeigt.Der zurückgegebene Modus zeigt an, wie der Benutzer mit seinem Touchpad interagiert, um das Spiel zu spielen.
Dies kann auch neben den verschiedenen UserInputService verwendet werden.
Diese Methode wird nur funktionieren, wenn sie in einem LocalScript verwendet wird.
Parameter
Die angegebene VRTouchpad .
Rückgaben
Der Modus des angegebenen VRTouchpad .
Code-Beispiele
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
Diese Methode gibt eine CFrame zurück, die die Position und Ausrichtung eines bestimmten virtuellen Realitätsgeräts (VR) als Versatz von einem Punkt im Platzbeschreibt.Diese Methode sollte verwendet werden, wenn VR-Kompatibilität in ein Spiel implementiert wird, um die Bewegung eines verbundenen VR-Geräts zu erhalten und zu verfolgen.
Durch die Verwendung der Methode können Entwickler Funktionen wie das Neupositionieren des In-Game-Charakters des Benutzers entsprechend dem Standort eines verbundenen VR-Geräts implementieren.Dies kann durch Ändern des CFrame des In-Game-Charakters des Benutzers erfolgen, um den CFrame des angegebenen VR-Geräts mit dem UserCFrame-Enum und den CFrame -Wertargumenten, die vom Ereignis übergeben wurden, zu vergleichen.
VRService bietet auch ein UserCFrameChanged Ereignis, das automatisch ausgelöst wird, wenn sich das CFrame des verbundenen VR-Geräts ändert, solange es in einem LocalScript verwendet wird.
Diese Methode wird nur funktionieren, wenn sie in einem LocalScript verwendet wird.
Parameter
Die angegebene UserCFrame .
Rückgaben
Code-Beispiele
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
Diese Methode gibt wahr zurück, wenn das angegebene Enum.UserCFrame virtuelle Realitätgerät (VR) zur Anhörung verfügbar ist.Es kann verwendet werden, um zu bestimmen, ob ein bestimmtes VR-Gerät, wie Enum.UserCFrame.Head , mit dem Spiel des Benutzers verbunden ist.
Dies kann auch neben den verschiedenen UserInputService verwendet werden.
Diese Methode wird nur funktionieren, wenn sie in einem LocalScript verwendet wird.
Parameter
Der angegebene Typ von VR-Gerät.
Rückgaben
Ein boolescher Indikator, der anzeigt, ob das angegebene VR-Gerät aktiviert ( true ) oder deaktiviert ( false ) ist.
Code-Beispiele
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
Diese Methode verschiebt das CFrame des Kopfes des Benutzers zum aktuellen Standort des VR-Headsets, das der Benutzer trägt.Es kann verwendet werden, um sicherzustellen, dass der Kopf des Benutzers im Spiel entsprechend der Position des VR-Headsets des Benutzers positioniert ist.
Dies verhält sich identisch zu UserInputService:RecenterUserHeadCFrame().
Diese Methode wird nur funktionieren, wenn sie in einem LocalScript verwendet wird.
Rückgaben
Code-Beispiele
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
Diese Methode fordert die Navigation zum angegebenen CFrame mit der angegebenen Enum.UserCFrame als Ursprung für die Visualisierungs-Parabole.Es kann verwendet werden, um virtuelle Realität (VR) in dein Spiel einzubinden, indem ein Mittel bereitgestellt wird, um einen Navigationspfad vom VR-Gerät des Benutzers zu einem Ziel zu visualisieren.
VRService hat ein ähnliches Ereignis, NavigationRequested, das verwendet wird, um solche Anfragen zu erkennen.Dies kann auch neben den verschiedenen UserInputService verwendet werden.
Diese Methode wird nur funktionieren, wenn sie in einem LocalScript verwendet wird.
Parameter
Das VR-Gerät, für das die Navigation angefordert wird.
Rückgaben
Code-Beispiele
Dieses Beispiel fordert die Navigation von den Koordinaten des Benutzers UserCFrame.Head zu den CFrame-Koordinaten einer NavigationDestination , die mit dem Namen benannt wurde.
Hinweis: Um dies zu ermöglichen, muss ein Teil mit dem Namen NavigationDestination im Arbeitsbereich des Spiels existieren.
local VRService = game:GetService("VRService")
local destination = workspace:FindFirstChild("NavigationDestination")
VRService:RequestNavigation(Enum.UserCFrame.Head, destination.CFrame)
SetTouchpadMode
Diese Methode legt den Modus des angegebenen Enum.VRTouchpad auf den angegebenen Enum.VRTouchpadMode fest.Es kann verwendet werden, um den VR-Touchpad-Modus des Benutzers zu ändern, so dass der Benutzer mit dem Touchpad anders mit dem Spiel interagiert.
Dies kann auch neben den verschiedenen UserInputService verwendet werden.
Diese Methode wird nur funktionieren, wenn sie in einem LocalScript verwendet wird.
Parameter
Die angegebene VRTouchpad du möchtest den Modus festlegen.
Der Modus, auf den Sie den angegebenen VRTouchpad festlegen möchten.
Rückgaben
Code-Beispiele
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)
Ereignisse
NavigationRequested
Dieses Ereignis wird ausgelöst, wenn für ein bestimmtes VR-Gerät Navigation angefordert wird.Es feuert mit einer CFrame Koordinate und der angegebenen Enum.UserCFrame an, die das Gerät anzeigt, das die Navigation anfordert.
Dieses Ereignis kann neben UserInputService Service-Ereignissen und -Methoden verwendet werden.
Da dieses Ereignis lokal ausgelöst wird, kann es nur in einem LocalScript verwendet werden.
Parameter
Weist das VR-Gerät aus, für das Navigation angefordert wird.
Code-Beispiele
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
Dieses Ereignis wird ausgelöst, wenn sich das Enum.VRTouchpadMode von einem Enum.VRTouchpad ändert.Sie können dieses Ereignis verwenden, um den Zustand von VR-Touchpads zu verfolgen, die über den Client des Benutzers verbunden sind.
Dieses Ereignis kann neben UserInputService Service-Ereignissen und -Methoden verwendet werden.
Da dieses Ereignis lokal ausgelöst wird, kann es nur in einem LocalScript verwendet werden.
Parameter
Das Touchpad, das den Modus geändert hat.
Der neue Modus.
Code-Beispiele
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
Dieses Ereignis wird ausgelöst, wenn ein Enum.UserCFrame geändert wird, zum Beispiel, wenn der Benutzer ein verbundenes VR-Gerät bewegt.Es kann neben GetUserCFrame() verwendet werden, um die CFrame Koordinaten eines VR-Geräts zu verfolgen und wenn es sich ändert/bewegt.Es kann auch neben UserInputService Service-Ereignissen und -Methoden verwendet werden.
Da dieses Ereignis lokal ausgelöst wird, kann es nur in einem LocalScript verwendet werden.
Parameter
Die Art von VR-Gerät, die sich verändert hat.
Code-Beispiele
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
Dieses Ereignis wird ausgelöst, wenn ein Enum.UserCFrame aktiviert oder deaktiviert ist.Es kann neben GetUserCFrameEnabled() verwendet werden, um zu verfolgen, ob ein bestimmtes UserCFrame aktiviert ist und wenn sich sein Zustand ändert.Es kann auch neben UserInputService Service-Ereignissen und -Methoden verwendet werden.
Da dieses Ereignis lokal ausgelöst wird, kann es nur in einem LocalScript verwendet werden.
Parameter
Die UserCFrame wird aktiviert oder deaktiviert.
Ein boolescher Indikator, der anzeigt, ob der UserCFrame aktiviert ist ( true ) oder deaktiviert ist ( false ).
Code-Beispiele
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)