VRService
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
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
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
Mengubah skalasi secara otomatis di VR untuk menyesuaikan pemain dengan avatar mereka.
Ketika benar, seorang pemain VR akan dapat menyiarkan tangan dan kepala mereka menggunakan kontroler dan headset mereka.
Ketika benar, pandangan pemain VR akan memudar saat kepala mereka bertabrakan dengan objek.
Menggambarkan apa yang Enum.UserCFrame bertanggung jawab atas masukan di VR.
Menggambarkan apakah pengguna menggunakan perangkat kenyataan virtual.
Metode
Mengembalikan VRTouchpadMode yang menunjukkan mode dari VRTouchpad yang ditentukan.
Mengembalikan CFrame yang menggambarkan posisi & orientasi perangkat realitas virtual yang ditentukan sebagaiOffset dari titik di ruang dunia nyata.
Kembalinya benar jika Enum.UserCFrame yang ditentukan tersedia untuk didengarkan.
Mengembalikan CFrame ke lokasi saat ini dari setelan VR yang dikenakan oleh pengguna.
Permintaan navigasi ke CFrame menggunakan Enum.UserCFrame sebagai dasar untuk parabola visualizer.
Tetapkan mode dari Enum.VRTouchpad ke Enum.VRTouchpadMode .
Acara
Diaktifkan saat navigasi diminta dari VRService .
Menembak jika Enum.VRTouchpadMode dari Enum.VRTouchpad diubah.
Diaktifkan saat Enum.UserCFrame diubah.
Berapi-api saat Enum.UserCFrame diaktifkan atau dimatikan.
Properti
AutomaticScaling
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
Setel ke benar, seorang pemain VR akan dapat menyiarkan tangan dan kepala mereka menggunakan kontroler dan headset mereka.
Properti ini harus diatur di server.
ControllerModels
FadeOutViewOnCollision
Ketika benar, pandangan pemain VR menyudar ke hitam saat kepala mereka bertabrakan dengan objek.Nilai default adalah benar.
GuiInputUserCFrame
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
local VRService = game:GetService("VRService")
if VRService.VREnabled then
print(VRService.GuiInputUserCFrame.Name)
else
print("No VR device detected!")
end
LaserPointer
ThirdPersonFollowCamEnabled
VREnabled
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.VREnabledif isUsingVR thenprint("User is using a VR headset!")elseprint("User is not using a VR headset!")end
Properti ini hanya dapat digunakan dalam LocalScript .
Lihat Juga
Contoh Kode
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
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
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
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
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
Contoh Kode
local VRService = game:GetService("VRService")
VRService:RecenterUserHeadCFrame()
RequestNavigation
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
Perangkat VR untuk mana navigasi diminta.
Memberikan nilai
Contoh Kode
local VRService = game:GetService("VRService")
local destination = workspace:FindFirstChild("NavigationDestination")
VRService:RequestNavigation(Enum.UserCFrame.Head, destination.CFrame)
SetTouchpadMode
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
Contoh Kode
local VRService = game:GetService("VRService")
VRService:SetTouchpadMode(Enum.VRTouchpad.Left, Enum.VRTouchpadMode.Touch)
Acara
NavigationRequested
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
Menunjukkan perangkat VR untuk navigasi yang diminta.
Contoh Kode
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
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.
Contoh Kode
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.
Boolean mengindikasikan apakah UserCFrame diaktifkan ( true ) atau dinonaktifkan ( false ).
Contoh Kode
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)