VRService
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
Layanan VR bertanggung jawab untuk menangani interaksi antara Roblox dan Realitas Virtual (VR).Metode, properti, dan peristiwa tersebut membantu Anda memberikan pengalaman terbaik bagi pengguna akhir yang ingin mengalami Roblox di perangkat VR.
Lihat Panduan VR untuk informasi lebih lanjut 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.
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
Secara otomatis menyesuaikan skala di VR untuk menyelaraskan pemain dengan avatar mereka.
Saat benar, pemain VR akan dapat menganimasikan tangan dan kepala mereka menggunakan kontroler dan headset mereka.
Saat benar, pandangan pemain VR akan memudar ke hitam saat kepala mereka bertabrakan dengan objek.
Menggambarkan apa Enum.UserCFrame yang bertanggung jawab untuk input di VR.
Menggambarkan apakah pengguna menggunakan perangkat realitas virtual.
Metode
Kembalikan Mode VRTouchpad menunjukkan mode VRTouchpad yang ditentukan.
Kembalikan CFrame yang menggambarkan posisi & orientasi perangkat realitas virtual tertentu sebagai offset dari titik di ruang dunia nyata.
Kembalikan benar jika Enum.UserCFrame yang ditentukan tersedia untuk didengarkan.
Memindahkan kembali CFrame ke lokasi saat ini dari headset VR yang dipakai oleh pengguna.
Permintaan navigasi ke yang ditentukan CFrame menggunakan yang ditentukan Enum.UserCFrame sebagai asal untuk parabola visualizer.
Mengatur mode dari spesifikasi Enum.VRTouchpad ke spesifikasi Enum.VRTouchpadMode.
Acara
Ditembak ketika navigasi diminta dari VRService .
Memicu jika Enum.VRTouchpadMode dari Enum.VRTouchpad diubah.
Melepaskan api saat Enum.UserCFrame diubah.
Melepaskan api saat Enum.UserCFrame diaktifkan atau dinonaktifkan.
Properti
AutomaticScaling
Ketika diatur ke Enum.VRScaling.World , Camera.HeadScale menyesuaikan agar skala dunia terlihat dari perspektif avatar.Seorang pemain dengan avatar kecil akan melihat objek di sekitar mereka lebih besar daripada pemain dengan avatar besar.
AvatarGestures
Saat diatur ke benar, pemain VR akan dapat menganimasikan tangan dan kepala mereka menggunakan kontroler dan headset mereka.
Properti ini harus ditetapkan di server.
ControllerModels
FadeOutViewOnCollision
Saat benar, pandangan pemain VR pudar ke hitam saat kepala mereka bertabrakan dengan objek.Properti ini mencegah pemain dapat melihat melalui dinding saat berada di VR.Nilai default adalah benar.
GuiInputUserCFrame
Properti ini menggambarkan apa Enum.UserCFrame yang bertanggung jawab untuk input di VR.Sebagai kejadian, jika headset VR bertanggung jawab, nilai properti ini akan menjadi Enum.UserCFrame.Head .
Untuk memeriksa apakah Roblox mendeteksi perangkat VR, yang akan bertanggung jawab untuk input 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!".
local VRService = game:GetService("VRService")
if VRService.VREnabled then
print(VRService.GuiInputUserCFrame.Name)
else
print("No VR device detected!")
end
LaserPointer
ThirdPersonFollowCamEnabled
VREnabled
Properti ini menjelaskan apakah pengguna menggunakan perangkat virtual reality (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 di 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.
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 menunjukkan mode dari spesifikasi Enum.VRTouchpad .Mode yang dikembalikan menunjukkan bagaimana pengguna berinteraksi dengan touchpad untuk memainkan game.
Ini juga dapat digunakan bersama dengan beberapa metode dan acara VR UserInputService.
Metode ini hanya akan berfungsi ketika digunakan di LocalScript .
Parameter
Yang ditentukan VRTouchpad .
Memberikan nilai
Mode dari VRTouchpad yang ditentukan.
Contoh Kode
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
Metode ini men返回值 CFrame yang menggambarkan posisi dan orientasi perangkat realitas virtual (VR) tertentu sebagai offset dari titik di ruang dunia nyata.Metode ini harus digunakan saat menerapkan kompatibilitas VR ke dalam permainan untuk mendapatkan dan melacak gerakan perangkat VR terhubung.
Dengan menggunakan metode, pengembang dapat menerapkan fitur seperti posisi ulang karakter pengguna dalam game yang sesuai dengan lokasi perangkat VR yang terhubung.Ini dapat dilakukan dengan mengubah CFrame karakter dalam game pengguna untuk cocok dengan CFrame perangkat VR yang ditentukan menggunakan argumen nilai UserCFrame dan CFrame yang diberikan oleh peristiwa.
VRService juga menyediakan acara UserCFrameChanged yang secara otomatis menyala saat CFrame dari perangkat VR terhubung berubah, selama itu digunakan di LocalScript .
Metode ini hanya akan berfungsi ketika digunakan di LocalScript .
Parameter
Yang ditentukan UserCFrame .
Memberikan nilai
Contoh Kode
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
Metode ini mengembalikan benar jika perangkat virtual reality (VR) yang ditentukan Enum.UserCFrame tersedia untuk didengarkan.Ini dapat digunakan untuk menentukan apakah perangkat VR tertentu, seperti Enum.UserCFrame.Head , terhubung ke game pengguna.
Ini juga dapat digunakan bersama dengan beberapa metode dan acara VR UserInputService.
Metode ini hanya akan berfungsi ketika digunakan di LocalScript .
Parameter
Jenis VR perangkatditentukan.
Memberikan nilai
A boolean 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!".
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 memindahkan kembali CFrame kepala pengguna ke lokasi saat ini dari headset VR yang dipakai oleh pengguna.Ini dapat digunakan untuk memastikan kepala pengguna dalam game di posisi sesuai dengan lokasi headset VR pengguna.
Ini berperilaku identik dengan UserInputService:RecenterUserHeadCFrame() .
Metode ini hanya akan berfungsi ketika digunakan di LocalScript .
Memberikan nilai
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.
local VRService = game:GetService("VRService")
VRService:RecenterUserHeadCFrame()
RequestNavigation
Metode ini meminta navigasi ke yang ditentukan CFrame menggunakan yang ditentukan Enum.UserCFrame sebagai asal untuk parabola visualizer.Ini dapat digunakan untuk mengintegrasikan realitas virtual (VR) ke dalam permainan Anda dengan memberikan cara untuk memvisualisasikan jalur navigasi dari perangkat VR pengguna ke tujuan.
VRService memiliki peristiwa serupa, NavigationRequested , digunakan untuk mendeteksi permintaan seperti itu.Ini juga dapat digunakan bersama dengan beberapa metode dan acara VR UserInputService.
Metode ini hanya akan berfungsi ketika digunakan di LocalScript .
Parameter
Perangkat VR untuk mana navigasi diminta.
Memberikan nilai
Contoh Kode
Contoh ini meminta navigasi dari koordinat UserCFrame.Head pengguna ke koordinat CFrame dari Part bernama NavigationDestination.
Catatan: Untuk agar ini berfungsi, Bagian bernama NavigationDestination harus ada di Workspace game.
local VRService = game:GetService("VRService")
local destination = workspace:FindFirstChild("NavigationDestination")
VRService:RequestNavigation(Enum.UserCFrame.Head, destination.CFrame)
SetTouchpadMode
Metode ini mengatur mode dari Enum.VRTouchpad yang ditentukan ke Enum.VRTouchpadMode yang ditentukan.Ini dapat digunakan untuk mengubah mode touchpad realitas virtual (VR) pengguna sehingga pengguna berinteraksi dengan game secara berbeda menggunakan touchpad.
Ini juga dapat digunakan bersama dengan beberapa metode dan acara VR UserInputService.
Metode ini hanya akan berfungsi ketika digunakan di LocalScript .
Parameter
Mode yang ditentukan VRTouchpad yang ingin Anda atur mode.
Mode yang ingin Anda atur ke VRTouchpad yang ditentukan.
Memberikan nilai
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.
local VRService = game:GetService("VRService")
VRService:SetTouchpadMode(Enum.VRTouchpad.Left, Enum.VRTouchpadMode.Touch)
Acara
NavigationRequested
Peristiwa ini terjadi saat navigasi diminta dari untuk perangkat VR tertentu.Ini menembak dengan koordinat CFrame dan spesifikasi Enum.UserCFrame yang menunjukkan permintaan perangkat yang meminta navigasi.
Peristiwa ini dapat digunakan bersama dengan UserInputService peristiwa dan metode layanan.
Karena acara ini terbakar secara lokal, hanya dapat digunakan di dalam LocalScript .
Parameter
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.
local VRService = game:GetService("VRService")
VRService.TouchpadModeChanged:Connect(function(cframe, inputUserCFrame)
print(inputUserCFrame.Name .. " made request with CFrame: " .. cframe)
end)
TouchpadModeChanged
Peristiwa ini terjadi jika Enum.VRTouchpadMode dari Enum.VRTouchpad diubah.Anda dapat menggunakan acara ini untuk melacak status touchpad VR yang terhubung melalui klien pengguna.
Peristiwa ini dapat digunakan bersama dengan UserInputService peristiwa dan metode layanan.
Karena acara ini terbakar secara lokal, hanya dapat digunakan di dalam LocalScript .
Parameter
Touchpad yang mengubah 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.
local VRService = game:GetService("VRService")
VRService.NavigationRequested:Connect(function(pad, mode)
print(pad.Name .. " Touchpad changed to state: " .. mode.Name)
end)
UserCFrameChanged
Peristiwa ini terjadi ketika Enum.UserCFrame diubah, misalnya ketika pengguna memindahkan perangkat VR terhubung.Ini dapat digunakan bersama dengan GetUserCFrame() untuk melacak koordinat CFrame dari perangkat VR, dan ketika berubah/pindah.Ini juga dapat digunakan bersama dengan acara dan metode layanan UserInputService.
Karena acara ini terbakar secara lokal, hanya dapat digunakan di dalam LocalScript .
Parameter
Jenis perangkat VR yang berubah.
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.
local VRService = game:GetService("VRService")
VRService.UserCFrameChanged:Connect(function(userCFrameType, cframeValue)
print(userCFrameType.Name .. " changed. Updated Frame: " .. tostring(cframeValue))
end)
UserCFrameEnabled
Peristiwa ini terjadi ketika Enum.UserCFrame diaktifkan atau dinonaktifkan.Ini dapat digunakan bersama dengan GetUserCFrameEnabled() untuk melacak apakah spesifikasi UserCFrame diaktifkan, dan kapan statusnya berubah.Ini juga dapat digunakan bersama dengan acara dan metode layanan UserInputService.
Karena acara ini terbakar secara lokal, hanya dapat digunakan di dalam LocalScript .
Parameter
The UserCFrame mendapatkan diaktifkan atau dinonaktifkan.
Sebuah boolean yang menunjukkan 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.
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)