VRService
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
VRService Roblox ve Sanal Gerçeklik (VR) arasındaki etkileşimlerin yönetilmesinden sorumludur.Yöntemleri, özellikleri ve etkinlikleri, VR cihazlarında Roblox'u deneyimlemek isteyen son kullanıcılara en iyi deneyimi sunmanıza yardımcı olur.
VR cihazları için bir deneyim yayınlamak için daha fazla bilgi için VR Rehberi bakın.
Kod Örnekleri
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
Özet
Özellikler
Oyuncuyu avatarla eşleştirmek için VR'de ölçeklendirmeyi otomatik olarak ayarlar.
Gerçek olduğunda, bir VR oyuncusu kontrolörlerini ve kulaklıkkullanarak ellerini ve başını animasyonlaştırabilecektir.
Gerçek olduğunda, bir VR oyuncunun görüşü, kafası bir nesneyle çarpıştığında siyaha solar.
VR'de girişten sorumlu olan Enum.UserCFrame nedir açıklar.
Kullanıcının sanal gerçeklik cihazı kullandığını tanımlar.
Yöntemler
Belirtilen bir VRTouchpad'in modunu gösteren VRTouchpadMode'u döndürür.
Belirtilen sanal gerçeklik cihazının konumunu ve yönünü gerçek dünya uzayındaki bir noktadan bir sapma olarak tanımlayan bir CFrame döndürür.
Belirtilen Enum.UserCFrame mevcut olursa gerçek döndürür, dinlenebilir.
Kullanıcı tarafından giyilen VR kulaklığın mevcut konumuna CFrame yeniden merkezler.
Görselleştirici parabolasının kaynağı olarak belirtilen CFrame kullanarak belirtilen Enum.UserCFrame görüntü navigasyonu isteği.
Belirtilen Enum.VRTouchpad modunu belirtilen Enum.VRTouchpadMode moduna ayarlar.
Etkinlikler
Navigasyon istenirse VRService 'den ateş edildiğinde ateş edildi.
Bir Enum.VRTouchpadMode 'nin değiştirildiğinde yangın çıkar, Enum.VRTouchpad .
Bir Enum.UserCFrame değiştirildiğinde ateş eder.
Bir Enum.UserCFrame etkinleştirildiğinde veya devre dışı bırakıldığında ateş eder.
Özellikler
AutomaticScaling
Enum.VRScaling.World olarak ayarlanırken, Camera.HeadScale dünyanın ölçeğinin avatardan görüldüğü şekilde ayarlanır.Küçük bir avatarı olan bir oyuncu, çevresindeki nesneleri büyük bir avara sahip bir oyuncudan daha büyük olarak algılayacaktır.
AvatarGestures
Gerçek olarak ayarlanırsa, bir VR oyuncusu kontrolörlerini ve kulaklıkkullanarak ellerini ve başını animasyonlaştırabilir.
Bu özellik sunucuda ayarlanmalıdır.
ControllerModels
FadeOutViewOnCollision
Doğru olduğunda, bir VR oyuncusunun görüşü, kafası bir nesneyle çarpıştığında siyaha kayar.Bu özellik, oyuncuların VR sırasında duvarlardan görebilmelerini engeller.Varsayılan değer true'dir.
GuiInputUserCFrame
Bu özellik, VR'de giriş için neyin sorumlu olduğunu tanımlar Enum.UserCFrame.durum, bir VR kulaklığı sorumluysa, bu özelliğin değeri Enum.UserCFrame.Head olacaktır.
Roblox'un VR girişinden sorumlu herhangi bir VR cihazı algıladığını kontrol etmek için, VREnabled özelliğini kontrol edebilirsiniz.
Kod Örnekleri
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
Bu özellik, kullanıcının sanal gerçeklik (VR) cihazı kullandığını tanımlar.
Bir VR cihazı etkinleştirildiyse, yerleşimi ve hareketini UserInputService:GetUserCFrame() gibi yöntemlerle etkileştirebilirsiniz.Ayrıca UserInputService.UserCFrameChanged etkinliğini kullanarak VR cihaz hareketine tepki verebilirsiniz.
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
Bu özellik yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın
Kod Örnekleri
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
Yöntemler
GetTouchpadMode
Bu yöntem, belirtilen bir Enum.VRTouchpad modunu gösteren Enum.VRTouchpadMode işaretleyen yöntemi döndürür.Geri döndürülen mod, kullanıcının oyunu oynamak için dokunma arayüzüyle nasıl etkileşime girdiğini gösterir.
Ayrıca birkaç UserInputService yöntemi ve etkinlik yanında kullanılabilir.
Bu yöntem yalnızca bir LocalScript içinde kullanıldığında çalışacaktır.
Parametreler
Belirtilen VRTouchpad .
Dönüşler
Belirtilen VRTouchpad 'nin modu.
Kod Örnekleri
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
Bu yöntem, belirtilen sanal gerçeklik (VR) cihazının konumunu ve yönünü gerçek dünya uzayındaki bir noktadan bir sapma olarak tanımlayan bir CFrame döndürür.Bu yöntem, bağlı bir VR cihazının hareketini almak ve takip etmek için bir oyuna VR uyumluluğu uygularken kullanılmalıdır.
Yöntemi kullanarak, geliştiriciler bağlı bir VR cihazın yerine göre kullanıcının oyun içi karakterini yeniden konumlandırma gibi özellikleri uygulayabilir.Bunun yapılması, kullanıcının oyundaki karakterinin CFrame değerini değiştirerek belirtilen VR cihazının CFrame değerine uymak için KullanıcıCFrame sayısal değeri ve CFrame değer argümanlarını etkinlik tarafından geçen kullanıcı tarafından yapılabilir.
VRService ayrıca bağlı VR cihazın UserCFrameChanged değiştiğinde otomatik olarak ateşleyen bir CFrame etkinliği sağlar, yani bir LocalScript içinde kullanılırken.
Bu yöntem yalnızca bir LocalScript içinde kullanıldığında çalışacaktır.
Parametreler
Belirtilen UserCFrame .
Dönüşler
Kod Örnekleri
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
Bu yöntem, belirtilen Enum.UserCFrame sanal gerçeklik cihazı (VR) dinlenebilir durumda olduğunda true döndürür.Belirtilen bir VR cihazının, örneğin Enum.UserCFrame.Head , kullanıcının oyununa bağlı olup olmadığını belirlemek için kullanılabilir.
Ayrıca birkaç UserInputService yöntemi ve etkinlik yanında kullanılabilir.
Bu yöntem yalnızca bir LocalScript içinde kullanıldığında çalışacaktır.
Parametreler
Belirtilen VR cihazı türü.
Dönüşler
Belirtilen VR cihazın etkinleştirildiğini veya devre dışı bırakıldığını gösteren bir mantık değeri ( ).
Kod Örnekleri
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
Bu yöntem, kullanıcının başının CFrame kafasını kullanıcı tarafından giyilen VR kulaklığın mevcut konumuna yeniden yerleştirir.Kullanıcının oyundaki başının kullanıcının VR kulaklıkkonumuna göre konumlandırıldığından emin olmak için kullanılabilir.
Bu, UserInputService:RecenterUserHeadCFrame() ile aynı davranır.
Bu yöntem yalnızca bir LocalScript içinde kullanıldığında çalışacaktır.
Dönüşler
Kod Örnekleri
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
Bu yöntem, görüntüleyici parabolasının kaynağı olarak belirtilen CFrame kullanarak belirtilen Enum.UserCFrame 'e navigasyon isteği gönderir.Bir oyuna sanal gerçeklik (VR) dahil etmek için bir yol sağlayarak kullanıcının VR cihazından hedefe bir navigasyon yolu görselleştirmek için bir yol sağlayabilir.
VRService benzer bir olaya sahiptir, NavigationRequested , böyle istekleri tespit etmek için kullanılır.Bunun yanı sıra birkaç UserInputService VR yöntemi ve etkinlik ile birlikte kullanılabilir.
Bu yöntem yalnızca bir LocalScript içinde kullanıldığında çalışacaktır.
Parametreler
Navigasyon talep edilen VR cihazı.
Dönüşler
Kod Örnekleri
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
Bu yöntem, belirtilen Enum.VRTouchpad modunu belirtilen Enum.VRTouchpadMode moduna ayarlar.Kullanıcının sanal gerçeklik (VR) dokunma modunu değiştirmek için kullanılabilir, böylece kullanıcı dokunma aracılığıyla oyunla farklı etkileşime girer.
Ayrıca birkaç UserInputService yöntemi ve etkinlik yanında kullanılabilir.
Bu yöntem yalnızca bir LocalScript içinde kullanıldığında çalışacaktır.
Parametreler
Seçilen VRTouchpad modunu ayarlamak istediğiniz belirtilmiş.
Belirtilen VRTouchpad 'yi ayarlamak istediğiniz mod.
Dönüşler
Kod Örnekleri
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)
Etkinlikler
NavigationRequested
Bu olay, belirlenmiş bir Enum.UserCFrame için navigasyon istenildiğinde ateşlenir VRServiceBir CFrame koordinatıyla ateş eder ve belirtilen Enum.UserCFrame navigasyon isteyen cihazı gösterir.
Bu etkinlik UserInputService.
Bu olay yerel olarak ateş olduğundan, sadece bir LocalScript içinde kullanılabilir.
Parametreler
Navigasyon talep edilen VR cihazını gösterir.
Kod Örnekleri
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
Bu olay, bir Enum.VRTouchpad 'in Enum.VRTouchpadMode 'sı değişirse ateşlenir.Bu etkinliği kullanarak, kullanıcının istemcisi aracılığıyla bağlı VR dokunma pedlerinin durumunu izleyebilirsiniz.
Bu etkinlik UserInputService.
Bu olay yerel olarak ateş olduğundan, sadece bir LocalScript içinde kullanılabilir.
Parametreler
Modu değiştiren dokunma pedi.
Yeni mod.
Kod Örnekleri
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
Bu olay, bir Enum.UserCFrame değiştirildiğinde ateşlenir, örneğin kullanıcı bağlı bir VR cihazını hareket ettirdiğinde.VR cihazının GetUserCFrame() koordinatlarını izlemek ve değiştiğinde/hareket ettiğinde kullanılabilir ve CFrame kullanılabilir.Ayrıca UserInputService hizmet olayları ve yöntemleriyle birlikte kullanılabilir.
Bu olay yerel olarak ateş olduğundan, sadece bir LocalScript içinde kullanılabilir.
Parametreler
Değişen VR cihazın türü.
Kod Örnekleri
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
Bu olay, bir Enum.UserCFrame etkinleştirildiğinde veya devre dışı bırakıldığında ateşlenir.Belirtilen bir GetUserCFrameEnabled() 'in etkinleştirilip etkinleştirilmediğini ve durumunun ne zaman değiştiğini izlemek için UserCFrame ile birlikte kullanılabilir.Ayrıca UserInputService hizmet olayları ve yöntemleriyle birlikte kullanılabilir.
Bu olay yerel olarak ateş olduğundan, sadece bir LocalScript içinde kullanılabilir.
Parametreler
The UserCFrame aktifleştiriliyor veya devre dışı bırakılıyor.
UserCFrame 'nin etkinleştirilip etkinleştirilmediğini gösteren bir true veya devre dışı bırakıldığını gösteren bir false .
Kod Örnekleri
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)