Roblox UtilitiesDevlHub Roblox Documentation

Class

VRService

NotCreatableService
Inherits
Instance › Object
Memory category
Instances

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#

AutomaticScalingVRScalingAutomatically adjusts scaling in VR to align the player with their avatar.ReadSafe
AvatarGesturesbooleanWhen true, a VR player will be able to animate their hands and head using their controllers and headset.ReadSafe
ControllerModelsVRControllerModelModeControls whether and how the player's VR hand controllers are rendered in the experience.ReadSafe
FadeOutViewOnCollisionbooleanWhen true, a VR player's view will fade to black when their head collides with an object.ReadSafe
GuiInputUserCFrameUserCFrameDescribes what UserCFrame is responsible for input in VR.ReadSafeNotReplicated
LaserPointerVRLaserPointerModeControls whether and how the VR laser pointer used to interact with the user interface is displayed.ReadSafe
ThirdPersonFollowCamEnabledbooleanIndicates whether the third-person follow camera is enabled for the VR user.ReadSafeReadOnlyNotReplicated
VREnabledbooleanDescribes 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.

Luau
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

This property can only be used in a LocalScript.

See Also#

Methods 6#

GetTouchpadModeReturns the VRTouchpadMode indicating the mode of a specified VRTouchpad.
GetUserCFrameReturns a CFrame describing the position & orientation of a specified virtual reality device as an offset from a point in real world space.
GetUserCFrameEnabledReturns true if the specified UserCFrame is available to be listened to.
RecenterUserHeadCFrameRe-centers the CFrame to the current location of the VR headset being worn by the user.
RequestNavigationRequests navigation to the specified CFrame using the specified UserCFrame as the origin for the visualizer parabola.
SetTouchpadModeSets 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.

NameTypeDefaultDescription
padVRTouchpadThe specified VRTouchpad.
Returns

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.

NameTypeDefaultDescription
typeUserCFrameThe specified UserCFrame.
Returns
  • CFrame — A CFrame describing the position and orientation of the specified VR device as an offset from a point in real-world space.

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.

NameTypeDefaultDescription
typeUserCFrameThe 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
  • ()

RequestNavigation(cframe: CFrame, inputUserCFrame: UserCFrame): ()#

This method requests navigation to the specified CFrame using the specified UserCFrame as the origin for the visualizer parabola. It can be used to incorporate virtual reality (VR) into your game by providing a means to visualize a navigation path from the user's VR device to a destination.

VRService has a similar event, NavigationRequested, used to detect such requests. This can also be used alongside the several UserInputService VR methods and events.

This method will only work when used in a LocalScript.

NameTypeDefaultDescription
cframeCFrameThe specified CFrame coordinates.
inputUserCFrameUserCFrameThe VR device for which the navigation is requested.
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.

NameTypeDefaultDescription
padVRTouchpadThe specified VRTouchpad you want to set the mode of.
modeVRTouchpadModeThe mode you want to set the specified VRTouchpad to.
Returns
  • ()

Events 4#

NavigationRequestedFired when navigation is requested from VRService.
TouchpadModeChangedFires if the VRTouchpadMode of a VRTouchpad is changed.
UserCFrameChangedFires when a UserCFrame is changed.
UserCFrameEnabledFires 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.

NameTypeDefaultDescription
padVRTouchpadThe touchpad that changed mode.
modeVRTouchpadModeThe 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.

NameTypeDefaultDescription
typeUserCFrameThe type of VR device that changed.
valueCFrameThe 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.

NameTypeDefaultDescription
typeUserCFrameThe UserCFrame getting enabled or disabled.
enabledbooleanA boolean indicating whether the UserCFrame is enabled (true) or disabled (false).

Inherited members#

Inherited from Instance 58
Inherited from Object 6
Properties (2)

ClassName, className

Events (1)

Changed