VRService
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
VRService est responsable de la gestion des interactions entre Roblox et la réalité virtuelle (VR).Ses méthodes, propriétés et événements vous aident à fournir la meilleure expérience pour les utilisateurs finaux qui cherchent à expérimenter Roblox sur des appareils VR.
Voir directives VR pour plus d'informations sur la publication d'une expérience pour les appareils VR.
Échantillons de code
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
Résumé
Propriétés
Ajuste automatiquement l'échelle dans VR pour aligner le joueur avec son avatar.
Lorsque c'est vrai, un joueur VR pourra animer ses mains et sa tête en utilisant ses contrôleurs et son casque.
Lorsque c'est vrai, la vue d'un joueur VR disparaîtra en noir lorsque sa tête se heurtera à un objet.
Détermine ce que Enum.UserCFrame est responsable de l'entrée dans VR.
Détermine si l'utilisateur utilise un appareil de réalité virtuelle.
Méthodes
Renvoie le mode VRTouchpad indiquant le mode d'un VRTouchpad spécifié.
Renvoie un cadre C qui décrit la position et l'orientation d'un appareil de réalité virtuelle spécifié en tant qu'écart par rapport à un point dans l'espace du monde réel.
Renvoie vrai si le Enum.UserCFrame est disponible pour être écouté.
Re-centre le CFrame à l'emplacement actuel du casque VR porté par l'utilisateur.
Navigations de requêtes vers le spécifié CFrame en utilisant le spécifié Enum.UserCFrame comme origine pour la parabole visuelle.
Définit le mode du spécifié Enum.VRTouchpad au spécifié Enum.VRTouchpadMode.
Évènements
Tiré lorsque la navigation est demandée à partir de VRService .
Se déclenche si le Enum.VRTouchpadMode d'un Enum.VRTouchpad est modifié.
Se déclenche lorsqu'un Enum.UserCFrame est modifié.
Se déclenche lorsqu'un Enum.UserCFrame est activé ou désactivé.
Propriétés
AutomaticScaling
Lorsqu'il est défini à Enum.VRScaling.World, Camera.HeadScale ajuste de sorte que la taille du monde soit vue du point de vue de l'avatar.Un joueur avec un petit avatar percevra les objets autour de lui comme plus grands que ceux d'un joueur avec un grand avatar.
AvatarGestures
Lorsqu'il est réglé sur vrai, un joueur VR pourra animer ses mains et sa tête en utilisant ses contrôleurs et son casque.
Cette propriété doit être définie sur le serveur.
ControllerModels
FadeOutViewOnCollision
Lorsque c'est vrai, la vue d'un joueur VR disparaît en noir lorsque sa tête se heurte à un objet.Cette propriété empêche les joueurs de pouvoir voir à travers les murs en VR.La valeur par défaut est vraie.
GuiInputUserCFrame
Cette propriété décrit ce que Enum.UserCFrame est responsable de l'entrée dans VR.Par instance, si un casque VR est responsable, la valeur de cette propriété sera Enum.UserCFrame.Head .
Pour vérifier si Roblox détecte des appareils VR, qui seraient responsables de l'entrée en VR, vous pouvez vérifier la propriété VREnabled.
Échantillons de code
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
Cette propriété décrit si l'utilisateur utilise un appareil de réalité virtuelle (VR).
Si un appareil VR est activé, vous pouvez interagir avec sa localisation et son mouvement via des méthodes telles que UserInputService:GetUserCFrame().Vous pouvez également réagir au mouvement du dispositif VR en utilisant l'événement 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
Cette propriété ne peut être utilisée qu'en LocalScript .
Voir aussi
Échantillons de code
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
Méthodes
GetTouchpadMode
Cette méthode renvoie le Enum.VRTouchpadMode indiquant le mode d'un mode spécifié Enum.VRTouchpad .Le mode retourné indique comment l'utilisateur interagit avec son touchpad pour jouer au jeu.
Cela peut également être utilisé aux côtés des plusieurs méthodes et événements VR UserInputService.
Cette méthode ne fonctionnera que lorsqu'elle est utilisée dans un LocalScript.
Paramètres
Le VRTouchpad .
Retours
Le mode du spécifié VRTouchpad .
Échantillons de code
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
Cette méthode renvoie un CFrame décrivant la position et l'orientation d'un appareil de réalité virtuelle spécifié comme un décalage par rapport à un point dans l'espace du monde réel.Cette méthode doit être utilisée lors de la mise en œuvre de la compatibilité VR dans un jeu pour obtenir et suivre le mouvement d'un appareil VR connecté.
En utilisant la méthode, les développeurs peuvent implémenter des fonctionnalités telles que le répositionnement du personnage de l'utilisateur dans le jeu correspondant à l'emplacement d'un appareil VR connecté.Cela peut être fait en modifiant le CFrame du personnage du joueur dans le jeu pour correspondre au CFrame de l'appareil VR spécifié en utilisant les arguments de valeur UserCFrame et CFrame transmis par l'événement.
VRService fournit également un événement UserCFrameChanged qui se déclenche automatiquement lorsque le CFrame du dispositif VR connecté change, tant qu'il est utilisé dans un LocalScript .
Cette méthode ne fonctionnera que lorsqu'elle est utilisée dans un LocalScript.
Paramètres
Le UserCFrame .
Retours
Échantillons de code
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
Cette méthode renvoie true si le dispositif de réalité virtuelle spécifié Enum.UserCFrame est disponible pour être écouté.Il peut être utilisé pour déterminer si un appareil VR spécifié, tel que Enum.UserCFrame.Head, est connecté au jeu de l'utilisateur.
Cela peut également être utilisé aux côtés des plusieurs méthodes et événements VR UserInputService.
Cette méthode ne fonctionnera que lorsqu'elle est utilisée dans un LocalScript.
Paramètres
Le type spécifié de appareilVR.
Retours
Un booléen indiquant si le dispositif VR spécifié est activé ( true ) ou désactivé ( false ).
Échantillons de code
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
Cette méthode redécentre le CFrame de la tête de l'utilisateur à l'emplacement actuel du casque VR porté par l'utilisateur.Il peut être utilisé pour assurer que la tête de l'utilisateur dans le jeu soit positionnée en fonction de l'emplacement du casque VR de l'utilisateur.
Cela se comporte de manière identique à UserInputService:RecenterUserHeadCFrame().
Cette méthode ne fonctionnera que lorsqu'elle est utilisée dans un LocalScript.
Retours
Échantillons de code
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
Cette méthode demande la navigation vers le spécifié CFrame en utilisant le spécifié Enum.UserCFrame comme origine pour la parabole visuelle.Il peut être utilisé pour incorporer la réalité virtuelle (VR) dans votre jeu en fournissant un moyen de visualiser un chemin de navigation depuis l'appareil VR de l'utilisateur jusqu'à une destination.
VRService a un événement similaire, NavigationRequested, utilisé pour détecter de telles demandes.Cela peut également être utilisé aux côtés des plusieurs méthodes et événements VR UserInputService.
Cette méthode ne fonctionnera que lorsqu'elle est utilisée dans un LocalScript.
Paramètres
L'appareil VR pour lequel la navigation est demandée.
Retours
Échantillons de code
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
Cette méthode définit le mode du mode spécifié Enum.VRTouchpad à celui spécifié Enum.VRTouchpadMode.Il peut être utilisé pour modifier le mode de la tablette de réalité virtuelle (VR) de l'utilisateur afin que l'utilisateur interagisse différemment avec le jeu en utilisant la tablette.
Cela peut également être utilisé aux côtés des plusieurs méthodes et événements VR UserInputService.
Cette méthode ne fonctionnera que lorsqu'elle est utilisée dans un LocalScript.
Paramètres
Le mode spécifié VRTouchpad que vous souhaitez définir.
Le mode auquel vous souhaitez définir le VRTouchpad spécifié.
Retours
Échantillons de code
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)
Évènements
NavigationRequested
Cet événement se déclenche lorsque la navigation est demandée à partir de VRService pour un appareil VR spécifié Enum.UserCFrame.Il tire avec une coordonnée CFrame et l'indication spécifiée Enum.UserCFrame indiquant la demande d'appareil demandant la navigation.
Cet événement peut être utilisé aux côtés des événements et des méthodes de service UserInputService.
Puisque cet événement se déclenche localement, il ne peut être utilisé qu'en LocalScript .
Paramètres
Indique l'appareil VR pour lequel la navigation est demandée.
Échantillons de code
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
Cet événement se déclenche si le Enum.VRTouchpadMode d'un Enum.VRTouchpad est modifié.Vous pouvez utiliser cet événement pour suivre les états des touches VR connectées via le client de l'utilisateur.
Cet événement peut être utilisé aux côtés des événements et des méthodes de service UserInputService.
Puisque cet événement se déclenche localement, il ne peut être utilisé qu'en LocalScript .
Paramètres
Le touchpad qui a changé de mode.
Le nouveau mode.
Échantillons de code
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
Cet événement se déclenche lorsqu'un Enum.UserCFrame est modifié, par exemple lorsque l'utilisateur déplace un appareil VR connecté.Il peut être utilisé aux côtés de GetUserCFrame() pour suivre les coordonnées CFrame d'un appareil VR et lorsqu'il change/se déplace.Il peut également être utilisé aux côtés des événements et des méthodes de service UserInputService.
Puisque cet événement se déclenche localement, il ne peut être utilisé qu'en LocalScript .
Paramètres
Le type d'appareil VR qui a changé.
Échantillons de code
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
Cet événement se déclenche lorsqu'un Enum.UserCFrame est activé ou désactivé.Il peut être utilisé aux côtés de GetUserCFrameEnabled() pour suivre si un UserCFrame spécifié est activé et quand son état change.Il peut également être utilisé aux côtés des événements et des méthodes de service UserInputService.
Puisque cet événement se déclenche localement, il ne peut être utilisé qu'en LocalScript .
Paramètres
Le UserCFrame obtenir activé ou désactivé.
Un booléen indiquant si le UserCFrame est activé ( true ) ou désactivé ( false ).
Échantillons de code
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)