VRService

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

無法建立
服務

VRService 負責處理 Roblox 和虛擬實境 (VR) 之間的互動。它的方法、屬性和事件協助您為尋找 VR 設備的用戶提供最佳體驗。

有關發布 VR 體驗的更多資訊,請參閱 VR 指南

範例程式碼

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

概要

屬性

方法

屬性

AutomaticScaling

平行讀取

當設為 Enum.VRScaling.World 時, Camera.HeadScale 會調整世界的大小,以便從虛擬人偶的觀點來看到世界的大小。一個小型虛擬人偶的玩家會覺得周圍的物體比大型虛擬人偶會大。

AvatarGestures

平行讀取

設定為真的時候,一個 VR 玩家就可以使用他們的控制器和耳機來動畫他們的手和頭。

此屬性必須在服務伺服器上設置。

平行讀取

FadeOutViewOnCollision

平行讀取

當真的時,一個 VR 玩家的視野會在他們的頭部與對物件碰撞時變黑。這個屬性會防止玩家在 VR 中能夠穿透牆壁。預設值是真的。

GuiInputUserCFrame

未複製
平行讀取

此屬性描述 Enum.UserCFrame 對 VR 輸入的責任。例個體、實例,如果 VR 耳機負荷,這個屬性的值將是 Enum.UserCFrame.Head

要確認 Roblox 是否偵測到任何 VR 裝置,這負責在 VR 中輸入的輸入,您可以檢查 VREnabled 屬性。

範例程式碼

VRService.GuiInputUserCFrame

local VRService = game:GetService("VRService")
if VRService.VREnabled then
print(VRService.GuiInputUserCFrame.Name)
else
print("No VR device detected!")
end
平行讀取

ThirdPersonFollowCamEnabled

唯讀
未複製
平行讀取

VREnabled

唯讀
未複製
平行讀取

此屬性描述使用者是否使用一個虛擬實境 (VR) 裝置。

如果 VR 裝置啟用,您可以通過方法,例如 UserInputService:GetUserCFrame() 與它的位置和移動互動。您也可以使用 UserInputService.UserCFrameChanged 事件來反應 VR 裝置的移動。


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

此屬性只能在 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

方法

GetTouchpadMode

此方法返回 Enum.VRTouchpadMode 指示指定 Enum.VRTouchpad 的模式。 返回的模式指示用戶如何與其觸摸板玩遊戲。

這也可以和多個 UserInputService VR 方法和事件一起使用。

此方法只適用於 LocalScript 中使用。

參數

指定的 VRTouchpad


返回

指定的 VRTouchpad 模式。

範例程式碼

VRService:GetTouchpadMode

local VRService = game:GetService("VRService")
VRService:GetTouchpadMode(Enum.VRTouchpad.Left)

GetUserCFrame

此方法返回 CFrame 描述特定虛擬實境裝置的位置和方向,作為從現實世界空間中的一個點來補償的偏移。此方法應該在實現 VR 兼容性到遊戲中時使用,以取得並跟蹤連接的 VR 裝置的移動。

使用此方法,開發人員可以實現功能,例如重新位置用戶在遊戲中的角色與連接的 VR 裝置的位置相符。這可以通過變更用戶在遊戲中的角色 CFrame 來達到。這可以通過使用 UserCFrame 枚 CFrame 值參數傳送給事件。

VRService 也提供一個 UserCFrameChanged 事件,當連接的 VR 裝置的 CFrame 變更時會自動發生,提供在 0> Class.LocalScript0> 中使用。

此方法只適用於 LocalScript 中使用。

參數

指定的 UserCFrame


返回

範例程式碼

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

此方法會返回 true 如果指定的 Enum.UserCFrame 虛擬實境裝置可用來聆聽。它可以用於確認是否連接到用戶的遊戲,例如 Enum.UserCFrame.Head

這也可以和多個 UserInputService VR 方法和事件一起使用。

此方法只適用於 LocalScript 中使用。

參數

指定的 VR 裝置類型。


返回

指定的 VR 裝置是否啟用 ( true ) 或是否禁用 ( false )。

範例程式碼

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

此方法將 CFrame 的頭頂重新導至使用者的頭部所在位置,以確保使用者的遊戲頭戴按鈕頂部位的位置。它可以用於確保使用者的遊戲頭戴按鈕頂部位的位置。

這會相同於 UserInputService:RecenterUserHeadCFrame()

此方法只適用於 LocalScript 中使用。


返回

void

範例程式碼

VRService:RecenterUserHeadCFrame

local VRService = game:GetService("VRService")
VRService:RecenterUserHeadCFrame()

RequestNavigation

void

此方法要求您使用指定的 CFrame 作為視覺化器的起始點,並使用指定的 Enum.UserCFrame 作為目標,以呈現對話視窗的仿真實體驗。您可以使用它來將虛擬實境 (VR) 集成到您的遊戲中,並提供一個方法來視覺化從用戶的 VR 設備到目標的�

VRService 有一個相似的事件,NavigationRequested,用於偵測這些請求。這也可以與多個 UserInputService VR 方法和事件一起使用。

此方法只適用於 LocalScript 中使用。

參數

cframe: CFrame

指定 CFrame 坐標。

inputUserCFrame: Enum.UserCFrame

請求導航的 VR 裝置。


返回

void

範例程式碼

VRService:RequestNavigation

local VRService = game:GetService("VRService")
local destination = workspace:FindFirstChild("NavigationDestination")
VRService:RequestNavigation(Enum.UserCFrame.Head, destination.CFrame)

SetTouchpadMode

void

此方法將指定的 Enum.VRTouchpad 的模式設置為指定的 Enum.VRTouchpadMode 。它可以用來變更使用者使用 touchpad 的虛擬實境 (VR) 模式,以便使用者與遊戲交互使用 touchpad。

這也可以和多個 UserInputService VR 方法和事件一起使用。

此方法只適用於 LocalScript 中使用。

參數

您指定的 VRTouchpad 您想設置的模式。

您想要設置指定 VRTouchpad 的模式。


返回

void

範例程式碼

VRService:SetTouchpadMode

local VRService = game:GetService("VRService")
VRService:SetTouchpadMode(Enum.VRTouchpad.Left, Enum.VRTouchpadMode.Touch)

活動

VRService 為指定的 Enum.UserCFrame VR 裝置請求導航時,此事件會發生。它以 CFrame 坐標和指定的 1> Container.UserCFrame1> 來表示裝置要求的導航。

這個事件可以與 UserInputService 服務事件和方法結合。

這個事件只能在 LocalScript 中發生,因此它只能在 Class.LocalScript 中使用。

參數

cframe: CFrame

請求 CFrame 座標。

inputUserCFrame: Enum.UserCFrame

指示要求導航的 VR 裝置。


範例程式碼

VRService.NavigationRequested

local VRService = game:GetService("VRService")
VRService.TouchpadModeChanged:Connect(function(cframe, inputUserCFrame)
print(inputUserCFrame.Name .. " made request with CFrame: " .. cframe)
end)

TouchpadModeChanged

此事件發生,如果 Enum.VRTouchpadMode 的 Enum.VRTouch 已變更。您可以使用此事件來跟蹤連接到用戶端的 VR 觸摸板。

這個事件可以與 UserInputService 服務事件和方法結合。

這個事件只能在 LocalScript 中發生,因此它只能在 Class.LocalScript 中使用。

參數

一個改變模式的觸摸板。

新模式。


範例程式碼

VRService.TouchpadModeChanged

local VRService = game:GetService("VRService")
VRService.NavigationRequested:Connect(function(pad, mode)
print(pad.Name .. " Touchpad changed to state: " .. mode.Name)
end)

UserCFrameChanged

這個事件會在 Enum.UserCFrame 變更時發生,例如當使用者移動連接的 VR 裝置時。它可以與 GetUserCFrame() 一起使用,以追蹤 VR 裝置的 CFrame 坐標,並且在

這個事件只能在 LocalScript 中發生,因此它只能在 Class.LocalScript 中使用。

參數

變更的 VR 裝置類型。

value: CFrame

更新後 CFrame 裝置的 VR 裝置位置。


範例程式碼

VRService.UserCFrameChanged

local VRService = game:GetService("VRService")
VRService.UserCFrameChanged:Connect(function(userCFrameType, cframeValue)
print(userCFrameType.Name .. " changed. Updated Frame: " .. tostring(cframeValue))
end)

UserCFrameEnabled

Enum.UserCFrame 啟用或關閉時,此事件會發生。它可以與 GetUserCFrameEnabled() 一起使用來跟蹤是否啟用指定的 UserCFrame ,並且當其狀態

這個事件只能在 LocalScript 中發生,因此它只能在 Class.LocalScript 中使用。

參數

UserCFrame|UserCFrame 獲得啟用或關閉。

enabled: bool

指示 UserCFrame 是否啟用 ( true ) 或啟用 ( false ) 。


範例程式碼

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)