VRService
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Dịch vụ VR có trách nhiệm xử lý các tương tác giữa Roblox và Thực tế ảo (VR).Các phương pháp, tính chất và sự kiện của nó giúp bạn cung cấp trải nghiệm tốt nhất cho người dùng cuối tìm kiếm trải nghiệm Roblox trên các thiết bị VR.
Xem Hướng dẫn VR để có thêm thông tin về việc xuất bản một trải nghiệm cho thiết bị VR.
Mẫu mã
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
Tóm Tắt
Thuộc Tính
Tự động điều chỉnh quy mô trong VR để cân bằng người chơi với avatarcủa họ.
Khi đúng, một người chơi VR sẽ có thể hoạt hình tay và đầu của họ bằng cách sử dụng bộ điều khiển và tai nghe của họ.
Khi đúng, góc nhìn của một người chơi VR sẽ biến mờ thành đen khi đầu họ va chạm với một vật thể.
Mô tả những gì Enum.UserCFrame có trách nhiệm cho nhập vào VR.
Mô tả xem người dùng đang sử dụng thiết bị thực tế ảo hay không.
Phương Pháp
Trả về VRTouchpadMode cho thấy chế độ của VRTouchpad được chỉ định.
Trả về một CFrame mô tả vị trí và hướng của một thiết bị thực tế ảo cụ thể như một khác biệt từ một điểm trong không gian thế giới thực.
Trả về true nếu Enum.UserCFrame được chỉ định có sẵn để lắng nghe.
Xoay lại trung tâm CFrame vị trí hiện tại của tai nghe VR đang được mặc bởi người dùng.
Yêu cầu điều hướng đến địa chỉ được chỉ định CFrame bằng cách sử dụng địa chỉ được chỉ định Enum.UserCFrame như nguồn gốc cho parabola visualizer.
Đặt chế độ của Enum.VRTouchpad được chỉ định đến Enum.VRTouchpadMode được chỉ định.
Sự Kiện
Bị sa thả khi yêu cầu điều hướng từ VRService.
Bắt lửa nếu Enum.VRTouchpadMode của Enum.VRTouchpad bị thay đổi.
Bắt lửa khi một Enum.UserCFrame được thay đổi.
Bắt lửa khi một Enum.UserCFrame được bật hoặc tắt.
Thuộc Tính
AutomaticScaling
Khi được đặt thành Enum.VRScaling.World , Camera.HeadScale điều chỉnh để phạm vi của thế giới được nhìn thấy từ góc nhìn của avatar.Một người chơi với một hình ảnh nhỏ sẽ nhận thấy các vật xung quanh họ lớn hơn so với một người chơi với hình ảnh lớn.
AvatarGestures
Khi được đặt thành true, một người chơi VR sẽ có thể hoạt hình tay và đầu của họ bằng cách sử dụng bộ điều khiển và tai nghe của họ.
Thuộc tính này phải được đặt trên máy chủ.
ControllerModels
FadeOutViewOnCollision
Khi đúng, góc nhìn của một người chơi VR biến mờ thành đen khi đầu họ va chạm với một vật thể.Tính năng này ngăn người chơi có thể nhìn xuyên qua tường trong khi ở trong VR.Giá trị mặc định là true.
GuiInputUserCFrame
Thuộc tính này mô tả những gì Enum.UserCFrame có trách nhiệm đối với đầu vào trong VR.Ví ví dụ / trường hợp, nếu một chiếc kính VR chịu trách nhiệm, giá trị của thuộc tính này sẽ là Enum.UserCFrame.Head .
Để kiểm tra xem Roblox có phát hiện bất kỳ thiết bị VR nào không, trách nhiệm cho việc nhập vào VR, bạn có thể kiểm tra thuộc tính VREnabled.
Mẫu mã
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
Thuộc tính này mô tả xem người dùng có đang sử dụng thiết bị thực tế ảo (VR) hay không.
Nếu một thiết bị VR được bật, bạn có thể tương tác với vị trí và chuyển động của nó thông qua các phương pháp như UserInputService:GetUserCFrame() .Bạn cũng có thể phản ứng với chuyển động của thiết bị VR bằng sự kiện 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
Thuộc tính này chỉ có thể được sử dụng trong một LocalScript .
Xem thêm
Mẫu mã
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
Phương Pháp
GetTouchpadMode
Phương pháp này trả về Enum.VRTouchpadMode để chỉ ra chế độ của một Enum.VRTouchpad được chỉ định.Chế độ trả lại cho thấy cách người dùng tương tác với touchpad để chơi trò chơi.
Nó cũng có thể được sử dụng cùng với một số phương pháp và sự kiện VR UserInputService khác.
Phương pháp này chỉ hoạt động khi được sử dụng trong một LocalScript .
Tham Số
Các được định VRTouchpad .
Lợi Nhuận
Chế độ của VRTouchpad được chỉ định.
Mẫu mã
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
Phương pháp này trả về một CFrame mô tả vị trí và hướng của một thiết bị thực tế ảo (VR) cụ thể như một khác biệt từ một điểm trong không gian thế giới thực.Phương pháp này nên được sử dụng khi triển khai sự tương thích VR vào một trò chơi để nhận và theo dõi chuyển động của một thiết bị VR kết nối.
Bằng cách sử dụng phương pháp, các nhà phát triển có thể triển khai các tính năng như điều chỉnh lại vị trí nhân vật trong trò chơi của người dùng phù hợp với vị trí của một thiết bị VR kết nối.Điều này có thể được thực hiện bằng cách thay đổi CFrame của nhân vật trong trò chơi của người dùng để phù hợp với CFrame của thiết bị VR được chỉ định bằng cách sử dụng UserCFrame enum và CFrame giá trị arguments được truyền bởi sự kiện.
VRService cũng cung cấp một sự kiện UserCFrameChanged tự động bắt lửa khi CFrame của thiết bị VR kết nối thay đổi, miễn là nó được sử dụng trong một LocalScript .
Phương pháp này chỉ hoạt động khi được sử dụng trong một LocalScript .
Tham Số
Các được định UserCFrame .
Lợi Nhuận
Mẫu mã
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
Phương pháp này trả về true nếu thiết bị thực tế ảo được chỉ định Enum.UserCFrame có sẵn để lắng nghe.Nó có thể được sử dụng để xác định xem một thiết bị VR cụ thể, chẳng hạn như Enum.UserCFrame.Head , có kết nối với trò chơi của người dùng hay không.
Nó cũng có thể được sử dụng cùng với một số phương pháp và sự kiện VR UserInputService khác.
Phương pháp này chỉ hoạt động khi được sử dụng trong một LocalScript .
Tham Số
Loại thiết bị VR được chỉ định.
Lợi Nhuận
Một boolean chỉ ra liệu thiết bị VR được chỉ định có bật ( true) hay tắt ( false) hay không.
Mẫu mã
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
Phương pháp này tái trung tâm hóa CFrame của đầu của người dùng về vị trí hiện tại của tai nghe VR đang được mặc bởi người dùng.Nó có thể được sử dụng để đảm bảo rằng đầu trong trò chơi của người dùng được đặt theo vị trí của tai nghe VR của người dùng.
Hành vi này giống như UserInputService:RecenterUserHeadCFrame() .
Phương pháp này chỉ hoạt động khi được sử dụng trong một LocalScript .
Lợi Nhuận
Mẫu mã
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
Phương pháp này yêu cầu điều hướng đến địa chỉ được chỉ định CFrame bằng cách sử dụng địa chỉ Enum.UserCFrame được chỉ định làm nguồn cho parabola visualizer.Nó có thể được sử dụng để tích hợp thực tế ảo (VR) vào trò chơi của bạn bằng cách cung cấp một cách để hiển thị một con đường di chuyển từ thiết bị VR của người dùng đến điểm đến.
VRService có một sự kiện tương tự, NavigationRequested , được sử dụng để phát hiện các yêu cầu như vậy.Nó cũng có thể được sử dụng cùng với một số phương pháp và sự kiện VR khác UserInputService.
Phương pháp này chỉ hoạt động khi được sử dụng trong một LocalScript .
Tham Số
Thiết bị VR mà được yêu cầu điều hướng.
Lợi Nhuận
Mẫu mã
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
Phương pháp này đặt chế độ của Enum.VRTouchpad được chỉ định đến Enum.VRTouchpadMode được chỉ định.Nó có thể được sử dụng để thay đổi chế độ bàn di chuột ảo (VR) của người dùng để người dùng tương tác với trò chơi khác nhau bằng bàn di chuột.
Nó cũng có thể được sử dụng cùng với một số phương pháp và sự kiện VR UserInputService khác.
Phương pháp này chỉ hoạt động khi được sử dụng trong một LocalScript .
Tham Số
Các được định VRTouchpad bạn muốn đặt chế độ.
Chế độ bạn muốn đặt định dạng VRTouchpad đã được xác định.
Lợi Nhuận
Mẫu mã
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)
Sự Kiện
NavigationRequested
Sự kiện này bắt lửa khi yêu cầu điều hướng từ cho một thiết bị VR cụ thể.Nó bắn với một phối hợp CFrame và được chỉ định Enum.UserCFrame cho thiết bị yêu cầu điều hướng.
Sự kiện này có thể được sử dụng cùng với UserInputService sự kiện và phương thức dịch vụ.
Vì sự kiện này bắt lửa địa phương, nó chỉ có thể được sử dụng trong một LocalScript .
Tham Số
Chỉ ra thiết bị VR mà được yêu cầu điều hướng.
Mẫu mã
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
Sự kiện này bắt lửa nếu Enum.VRTouchpadMode của Enum.VRTouchpad được thay đổi.Bạn có thể sử dụng sự kiện này để theo dõi tình trạng của các điểm chạm VR được kết nối thông qua khách hàng của người dùng.
Sự kiện này có thể được sử dụng cùng với UserInputService sự kiện và phương thức dịch vụ.
Vì sự kiện này bắt lửa địa phương, nó chỉ có thể được sử dụng trong một LocalScript .
Tham Số
Bàn di chuột đã thay đổi chế độ.
Chế độ mới.
Mẫu mã
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
Sự kiện này bắt lửa khi có sự thay đổi của Enum.UserCFrame, ví dụ khi người dùng di chuyển một thiết bị VR kết nối.Nó có thể được sử dụng cùng với GetUserCFrame() để theo dõi CFrame vị trí của một thiết bị VR, và khi nó thay đổi/di chuyển.Nó cũng có thể được sử dụng cùng với sự kiện và phương thức dịch vụ UserInputService.
Vì sự kiện này bắt lửa địa phương, nó chỉ có thể được sử dụng trong một LocalScript .
Tham Số
Loại thiết bị VR bị thay đổi.
Mẫu mã
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
Sự kiện này bắt lửa khi một Enum.UserCFrame được bật hoặc tắt.Nó có thể được sử dụng cùng với GetUserCFrameEnabled() để theo dõi xem có bật kích hoạt UserCFrame đã được xác định hay không, và khi trạng thái của nó thay đổi.Nó cũng có thể được sử dụng cùng với sự kiện và phương thức dịch vụ UserInputService.
Vì sự kiện này bắt lửa địa phương, nó chỉ có thể được sử dụng trong một LocalScript .
Tham Số
Các UserCFrame đang được bật hoặc tắt.
Một boolean chỉ ra liệu UserCFrame có được bật ( true ) hay không ( false ).
Mẫu mã
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)