Class
VRService
NotCreatableService
Service responsible for handling interactions between Roblox and Virtual Reality (VR).
VRService is responsible for handling interactions between Roblox and Virtual Reality (VR). Its methods, properties, and events help you provide the best experience for end users seeking to experience Roblox on VR devices.
See VR Guidelines for more information on publishing an experience for VR devices.
Properties 8#
AutomaticScalingVRScaling | Automatically adjusts scaling in VR to align the player with their avatar.ReadSafe |
AvatarGesturesboolean | When true, a VR player will be able to animate their hands and head using their controllers and headset.ReadSafe |
ControllerModelsVRControllerModelMode | Controls whether and how the player's VR hand controllers are rendered in the experience.ReadSafe |
FadeOutViewOnCollisionboolean | When true, a VR player's view will fade to black when their head collides with an object.ReadSafe |
GuiInputUserCFrameUserCFrame | Describes what UserCFrame is responsible for input in VR.ReadSafeNotReplicated |
LaserPointerVRLaserPointerMode | Controls whether and how the VR laser pointer used to interact with the user interface is displayed.ReadSafe |
ThirdPersonFollowCamEnabledboolean | Indicates whether the third-person follow camera is enabled for the VR user.ReadSafeReadOnlyNotReplicated |
VREnabledboolean | Describes whether the user is using a virtual reality device.ReadSafeReadOnlyNotReplicated |
AutomaticScaling: VRScaling#
ReadSafe
When set to VRScaling.World, Camera.HeadScale adjusts so
that the scale of the world is seen from the avatar's perspective. A
player with a small avatar will perceive the objects around them as larger
than a player with a large avatar will.
AvatarGestures: boolean#
ReadSafe
When set to true, a VR player will be able to animate their hands and head
using their controllers and headset. Set this to false for experiences
where VR hand and head tracking conflicts with custom game mechanics, such
as bespoke avatar rigs or weapon systems incompatible with IK-driven
gestures.
This property must be set on the server.
ControllerModels: VRControllerModelMode#
ReadSafe
Controls how the models representing the player's VR hand controllers are
displayed (VRControllerModelMode). When set to
Transparent, the controller
models are shown with transparency; when set to
Disabled, the controller models are
not rendered.
Defaults to Transparent.
FadeOutViewOnCollision: boolean#
ReadSafe
When true, a VR player's view fades to black when their head collides with an object. This property prevents players from being able to see through walls while in VR. The default value is true.
GuiInputUserCFrame: UserCFrame#
NotReplicatedReadSafe
This property describes what UserCFrame is responsible for input in
VR. For instance, if a VR headset is responsible, the value of this
property will be UserCFrame.Head.
To check if Roblox detects any VR devices, which would be responsible for
input in VR, you can check the VREnabled
property.
LaserPointer: VRLaserPointerMode#
ReadSafe
Controls the mode of the laser pointer that a VR player uses to point at
and interact with the user interface (VRLaserPointerMode). Set it
to Disabled to hide the laser pointer,
Pointer to show a single pointer, or
DualPointer to show a pointer for
each hand.
Defaults to Pointer.
ThirdPersonFollowCamEnabled: boolean#
ReadOnlyNotReplicatedReadSafe
Read-only. Indicates whether the third-person follow camera is enabled for the VR user. Its value mirrors the user's VR comfort setting and updates automatically whenever the user changes that setting, firing a changed signal so that scripts can respond. It cannot be set from a script.
VREnabled: boolean#
ReadOnlyNotReplicatedReadSafe
This property describes whether the user is using a virtual reality (VR) device.
If a VR device is enabled, you can interact with its location and movement
through methods such as UserInputService:GetUserCFrame(). You can
also react to VR device movement using the
UserInputService.UserCFrameChanged event.
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!")
endThis property can only be used in a LocalScript.
See Also#
Methods 6#
| GetTouchpadMode | Returns the VRTouchpadMode indicating the mode of a specified VRTouchpad. |
| GetUserCFrame | Returns a CFrame describing the position & orientation of a specified virtual reality device as an offset from a point in real world space. |
| GetUserCFrameEnabled | Returns true if the specified UserCFrame is available to be
listened to. |
| RecenterUserHeadCFrame | Re-centers the CFrame to the current location of the VR headset
being worn by the user. |
| RequestNavigation | Requests navigation to the specified CFrame using the specified
UserCFrame as the origin for the visualizer parabola. |
| SetTouchpadMode | Sets the mode of the specified VRTouchpad to the specified
VRTouchpadMode. |
GetTouchpadMode(pad: VRTouchpad): VRTouchpadMode#
This method returns the VRTouchpadMode indicating the mode of a
specified VRTouchpad. The returned mode indicates how the user
interacts with their touchpad to play the game.
This can also be used alongside the several UserInputService VR
methods and events.
This method will only work when used in a LocalScript.
| Name | Type | Default | Description |
|---|---|---|---|
pad | VRTouchpad | The specified VRTouchpad. |
Returns
VRTouchpadMode— The mode of the specifiedVRTouchpad.
GetUserCFrame(type: UserCFrame): CFrame#
This method returns a CFrame describing the position and
orientation of a specified virtual reality (VR) device as an offset from a
point in real world space. This method should be used when implementing VR
compatibility into a game to obtain and track the movement of a connected
VR device.
By using the method, developers can implement features such as re-positioning the user's in-game character corresponding to the location of a connected VR device. This can be done by changing the CFrame of the user's in-game character to match the CFrame of the specified VR device using the UserCFrame enum and CFrame value arguments passed by the event.
VRService also provides a
UserCFrameChanged event that
automatically fires when the CFrame of connected VR device
changes, so long it is used in a LocalScript.
This method will only work when used in a LocalScript.
| Name | Type | Default | Description |
|---|---|---|---|
type | UserCFrame | The specified UserCFrame. |
GetUserCFrameEnabled(type: UserCFrame): boolean#
This method returns true if the specified UserCFrame virtual
reality device (VR) is available to be listened to. It can be used to
determine whether a specified VR device, such as UserCFrame.Head,
is connected to the user's game.
This can also be used alongside the several UserInputService VR
methods and events.
This method will only work when used in a LocalScript.
| Name | Type | Default | Description |
|---|---|---|---|
type | UserCFrame | The specified type of VR device. |
Returns
boolean— A boolean indicating whether the specified VR device is enabled (true) or disabled (false).
RecenterUserHeadCFrame(): ()#
This method re-centers the CFrame of the user's head to the
current location of the VR headset being worn by the user. It can be used
to ensure that the user's in-game head is positioned according to the
location of the user's VR headset.
This behaves identically to
UserInputService:RecenterUserHeadCFrame().
This method will only work when used in a LocalScript.
Returns
()
SetTouchpadMode(pad: VRTouchpad, mode: VRTouchpadMode): ()#
This method sets the mode of the specified VRTouchpad to the
specified VRTouchpadMode. It can be used to change the user's
virtual reality (VR) touchpad mode so that the user interacts with the
game differently using the touchpad.
This can also be used alongside the several UserInputService VR
methods and events.
This method will only work when used in a LocalScript.
| Name | Type | Default | Description |
|---|---|---|---|
pad | VRTouchpad | The specified VRTouchpad you want to set the mode
of. | |
mode | VRTouchpadMode | The mode you want to set the specified VRTouchpad
to. |
Returns
()
Events 4#
| NavigationRequested | Fired when navigation is requested from VRService. |
| TouchpadModeChanged | Fires if the VRTouchpadMode of a VRTouchpad is changed. |
| UserCFrameChanged | Fires when a UserCFrame is changed. |
| UserCFrameEnabled | Fires when a UserCFrame is enabled or disabled. |
TouchpadModeChanged(pad: VRTouchpad, mode: VRTouchpadMode)#
This event fires if the VRTouchpadMode of a VRTouchpad is
changed. You can use this event to track the states of VR touchpads
connected via the user's client.
This event can be used alongside UserInputService service events
and methods.
Since this event fires locally, it can only be used in a
LocalScript.
| Name | Type | Default | Description |
|---|---|---|---|
pad | VRTouchpad | The touchpad that changed mode. | |
mode | VRTouchpadMode | The new mode. |
UserCFrameChanged(type: UserCFrame, value: CFrame)#
This event fires when a UserCFrame is changed, for instance when
the user moves a connected VR device. It can be used alongside
GetUserCFrame() to track the
CFrame coordinates of a VR device, and when it changes/moves.
It can also be used alongside UserInputService service events and
methods.
Since this event fires locally, it can only be used in a
LocalScript.
| Name | Type | Default | Description |
|---|---|---|---|
type | UserCFrame | The type of VR device that changed. | |
value | CFrame | The updated CFrame coordinates of the VR device after the
change. |
UserCFrameEnabled(type: UserCFrame, enabled: boolean)#
This event fires when a UserCFrame is enabled or disabled. It can
be used alongside
GetUserCFrameEnabled() to track
whether a specified UserCFrame is enabled, and when its
state changes. It can also be used alongside UserInputService
service events and methods.
Since this event fires locally, it can only be used in a
LocalScript.
| Name | Type | Default | Description |
|---|---|---|---|
type | UserCFrame | The UserCFrame getting enabled or disabled. | |
enabled | boolean | A boolean indicating whether the UserCFrame is
enabled (true) or disabled (false). |
Inherited members#
Inherited from Instance 58
Properties (10)
Archivable, archivable, Capabilities, IsInSandbox, Name, Parent, PredictionMode, RobloxLocked, Sandboxed, UniqueId
Methods (39)
AddTag, children, ClearAllChildren, Clone, clone, Destroy, destroy, FindFirstAncestor, FindFirstAncestorOfClass, FindFirstAncestorWhichIsA, FindFirstChild, findFirstChild, FindFirstChildOfClass, FindFirstChildWhichIsA, FindFirstDescendant, GetActor, GetAttribute, GetAttributeChangedSignal, GetAttributes, GetChildren, getChildren, GetDebugId, GetDescendants, GetFullName, GetStyled, GetStyledPropertyChangedSignal, GetTags, HasTag, IsAncestorOf, IsDescendantOf, isDescendantOf, IsPropertyModified, QueryDescendants, Remove, remove, RemoveTag, ResetPropertyToDefault, SetAttribute, WaitForChild