VRService

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tidak Dapat Dibuat
Layanan

VRService bertanggung jawab atas penanganan interaksi antara Roblox dan Virtual Reality (VR). Metode, proporsi, dan acara metode membantu Anda memberikan pengalaman terbaik bagi pengguna akhir yang mencari pengalaman Roblox di perangkat VR.

Lihat VR Guidelines untuk lebih banyak informasi tentang mempublikasikan pengalaman untuk perangkat VR.

Contoh Kode

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.

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

Rangkuman

Properti

Metode

Properti

AutomaticScaling

Baca Paralel

Ketika diatur ke Enum.VRScaling.World , Camera.HeadScale menyesuaikan agar skala dunia dilihat dari perspektif avatar. Seorang pemain dengan avatar kecil akan mengira bahwa objek di sekitarnya lebih besar daripada pemain dengan avatar besar.

AvatarGestures

Baca Paralel

Setel ke benar, seorang pemain VR akan dapat menyiarkan tangan dan kepala mereka menggunakan kontroler dan headset mereka.

Properti ini harus diatur di server.

Baca Paralel

FadeOutViewOnCollision

Baca Paralel

Ketika benar, pandangan pemain VR menyudar ke hitam saat kepala mereka bertabrakan dengan objek.Nilai default adalah benar.

GuiInputUserCFrame

Tidak Direplikasi
Baca Paralel

Item ini menggambarkan apa yang Enum.UserCFrame bertanggung jawab atas masukan di VR. kejadian, jika headset VR bertanggung jawab, nilai item ini akan menjadi Enum.UserCFrame.Head.

Untuk memeriksa apakah Roblox mendeteksi perangkat VR apa pun, yang bertanggung jawab atas masukan di VR, Anda dapat memeriksa properti VREnabled.

Contoh Kode

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!".

VRService.GuiInputUserCFrame

local VRService = game:GetService("VRService")
if VRService.VREnabled then
print(VRService.GuiInputUserCFrame.Name)
else
print("No VR device detected!")
end
Baca Paralel

ThirdPersonFollowCamEnabled

Hanya Baca
Tidak Direplikasi
Baca Paralel

VREnabled

Hanya Baca
Tidak Direplikasi
Baca Paralel

Item ini menggambarkan apakah pengguna menggunakan perangkat kenyataan virtual (VR).

Jika perangkat VR diaktifkan, Anda dapat berinteraksi dengan lokasi dan gerakannya melalui metode seperti UserInputService:GetUserCFrame() . Anda juga dapat bereaksi terhadap gerakan perangkat VR menggunakan acara UserInputService.UserCFrameChanged.


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

Properti ini hanya dapat digunakan dalam LocalScript .

Lihat Juga

Contoh Kode

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.

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

Metode

GetTouchpadMode

Metode ini mengembalikan Enum.VRTouchpadMode yang menunjukkan mode dari Enum.VRTouchpad tertentu. Mode yang dikembalikan menunjukkan bagaimana pengguna berinteraksi dengan touchpad mereka untuk memainkan game.

Ini juga dapat digunakan bersamaan dengan beberapa metode dan acara VR UserInputService.

Metode ini hanya akan berfungsi ketika digunakan dalam LocalScript .

Parameter

Yang ditentukan VRTouchpad .


Memberikan nilai

Mode dari spesifikasi VRTouchpad .

Contoh Kode

This example retrieves and prints the name of the user's current VRTouchpad.Left touchpad mode.

VRService:GetTouchpadMode

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

GetUserCFrame

Metode ini mengembalikan CFrame menggambarkan posisi dan orientasi dari perangkat VR yang ditentukan sebagai sebuahOffset dari titik di ruang dunia nyata. Metode ini harus digunakan ketika menerapkan kompatibilitas VR ke game untuk mengotak-atik gerakan dari perangkat VR yang terhubung.

Dengan menggunakan metode ini, pengembang dapat menerapkan fitur seperti mengubah CFrame dari karakter pengguna dalam game ke lokasi perangkat VR yang terhubung menggunakan argumen CFrame dan CFrame yang diberikan oleh argumen 2>UserCFrame2> dan 5>CFrame5>.

VRService juga menyediakan acara UserCFrameChanged yang otomatis membunyikan ketika CFrame dari perangkat VR yang terhubung berubah, asalkan itu digunakan dalam 0> Class.LocalScript0> .

Metode ini hanya akan berfungsi ketika digunakan dalam LocalScript .

Parameter

ENSEMBLE.USERCFRAME|USERCFRAME yang ditentukan.


Memberikan nilai

Contoh Kode

This example positions a part at the player's left hand, assuming Camera.HeadLocked = true

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

Metode ini mengembalikan true jika perangkat virtual reality Enum.UserCFrame yang ditentukan tersedia untuk didengarkan. Ini dapat digunakan untuk menentukan apakah perangkat VR spesifik, seperti Enum.UserCFrame.Head, terhubung ke game pengguna.

Ini juga dapat digunakan bersamaan dengan beberapa metode dan acara VR UserInputService.

Metode ini hanya akan berfungsi ketika digunakan dalam LocalScript .

Parameter

Jenis VR perangkatditentukan.


Memberikan nilai

Boolean yang menunjukkan apakah perangkat VR yang ditentukan diaktifkan ( true ) atau dinonaktifkan ( false).

Contoh Kode

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!".

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

Metode ini mengembalikan CFrame dari kepala pengguna ke lokasi saat ini dari set VR headset yang dikenakan pengguna. Ini dapat digunakan untuk memastikan bahwa kepala pengguna dalam game ditempatkan sesuai lokasi set VR headset yang dikenakan pengguna.

Ini bersikap sama dengan UserInputService:RecenterUserHeadCFrame() .

Metode ini hanya akan berfungsi ketika digunakan dalam LocalScript .


Memberikan nilai

void

Contoh Kode

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.

VRService:RecenterUserHeadCFrame

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

RequestNavigation

void

Metode ini meminta navigasi ke CFrame yang ditentukan menggunakan Enum.UserCFrame sebagai dasar untuk parabola visualizer. Ini dapat digunakan untuk mengincorporasi realitas virtual (VR) ke game Anda dengan memberikan cara untuk melihat jalan navigasi dari perangkat VR pengguna ke tujuan.

VRService memiliki acara serupa, NavigationRequested, digunakan untuk mendeteksi solicitud seperti itu. Ini juga dapat digunakan bersama dengan beberapa metode dan acara VR UserInputService .

Metode ini hanya akan berfungsi ketika digunakan dalam LocalScript .

Parameter

cframe: CFrame

Koordinat CFrame yang ditentukan.

inputUserCFrame: Enum.UserCFrame

Perangkat VR untuk mana navigasi diminta.


Memberikan nilai

void

Contoh Kode

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.

VRService:RequestNavigation

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

SetTouchpadMode

void

Metode ini menetapkan mode dari Enum.VRTouchpad ke mode Enum.VRTouchpadMode yang ditentukan. Ini dapat digunakan untuk mengubah mode pengguna virtual reality (VR) touchpad sehingga pengguna berinteraksi dengan game secara berbeda menggunakan touchpad.

Ini juga dapat digunakan bersamaan dengan beberapa metode dan acara VR UserInputService.

Metode ini hanya akan berfungsi ketika digunakan dalam LocalScript .

Parameter

枚列.VRTouchpad|VRTouchpad yang ditentukan yang ingin Anda tetapkan mode.

Mode yang ingin Anda tetapkan VRTouchpad ke.


Memberikan nilai

void

Contoh Kode

This example sets the user's VRTouchpad.Left touchpad mode to TouchMode.Touch. This means that the left touchpad is treated as ButtonB.

VRService:SetTouchpadMode

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

Acara

Acara ini diaktifkan ketika navigasi diminta dari VRService untuk perangkat VR tertentu. Ini diaktifkan dengan koordinat Enum.UserCFrame dan CFrame yang ditunjukkan perangkat meminta navigasi.

Acara ini dapat digunakan bersama dengan acara UserInputService dan metode layanan.

Karena acara ini diaktifkan lokal, itu hanya dapat digunakan dalam LocalScript .

Parameter

cframe: CFrame

Permintaan CFrame koordinat.

inputUserCFrame: Enum.UserCFrame

Menunjukkan perangkat VR untuk navigasi yang diminta.


Contoh Kode

This example prints the name of the UserCFrame VR device making the request, and the CFrame coordinates passed.

VRService.NavigationRequested

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

TouchpadModeChanged

Acara ini diaktifkan jika Enum.VRTouchpadMode dari Enum.VRTouchpad Enum.VRTouchpad dengan cara apa pun. Anda dapat menggunakan acara ini untuk melacak status touchpad VR yang terhubung melalui klien pengguna.

Acara ini dapat digunakan bersama dengan acara UserInputService dan metode layanan.

Karena acara ini diaktifkan lokal, itu hanya dapat digunakan dalam LocalScript .

Parameter

Touchpad yang berubah mode.

Mode baru.


Contoh Kode

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.

VRService.TouchpadModeChanged

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

UserCFrameChanged

Acara ini diaktifkan ketika Enum.UserCFrame diubah, misalnya ketika pengguna menyebarkan perangkat VR yang terhubung. Ini dapat digunakan bersama dengan GetUserCFrame() untuk melacak koordinat

Karena acara ini diaktifkan lokal, itu hanya dapat digunakan dalam LocalScript .

Parameter

Jenis perangkat VR yang berubah.

value: CFrame

Koordinat CFrame yang diperbarui dari perangkat VR setelah perubahan.


Contoh Kode

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.

VRService.UserCFrameChanged

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

UserCFrameEnabled

Acara ini diaktifkan ketika Enum.UserCFrame diaktifkan atau dimatikan. Ini dapat digunakan bersama dengan GetUserCFrameEnabled() untuk melacak apakah Class.UserCFrame|UserCFrame

Karena acara ini diaktifkan lokal, itu hanya dapat digunakan dalam LocalScript .

Parameter

UserCFrame|UserCFrame mendapatkan kemampuan atau kemampuan dinonaktifkan.

enabled: bool

Boolean mengindikasikan apakah UserCFrame diaktifkan ( true ) atau dinonaktifkan ( false ).


Contoh Kode

This example fires when a UserCFrame changes state, printing the name of the changed UserCFrame and whether it changed got enabled or disabled.

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)