Roblox, Xbox ve PlayStation kontrolörleri gibi USB oyun konsollarından giriş kabul eder.Oyun konsolları farklı çeşitlerde geliyor, bu nedenle bir oyuncunun oyun konsolu girişlerinin deneyiminizde kullanılabileceğini doğrulamak için ek bir kurulum yapmanız gerekiyor.
Oyun kolu girişlerini ayarlamak için, bir oyuncunun cihazı için veya ile bağlı oyun kollarını tespit etmek, Roblox ile uyumlu desteklenen girişleri doğrulamak, giriş almak ve daha fazlası için ve daha fazlası için kullanabilirsiniz.
Oyun kolu girişlerini bağlarken, oyuncular için tutarlı bir oyun kolu deneyimi oluşturmak için ortak kontrol şemalarını görün.Girişler ayarlanırken, desteklenen kontrolörlere haptik geri bildirim dahil ederek oyuncunun deneyimini geliştirebilirsiniz.
Oyun konsollarını algıla
Bir oyuncunun cihazının şu anda UserInputService.GamepadEnabled özelliğini kullanarak bir oyun kolu aktif olup olmadığını tespit edebilirsiniz.
Oyun kolu algılanıyor
local UserInputService = game:GetService("UserInputService")if UserInputService.GamepadEnabled thenprint("Player has gamepad enabled...")end
Bağlı oyun konsollarını UserInputService.GamepadConnected ve UserInputService.GamepadDisconnected etkinlikleri aracılığıyla kontrol edebilirsiniz.Bu olaylar, bir cihaz bağlandığında veya bağlantı kesildiğinde ayrı ayrı ateş edilir ve her iki olay da olaya neden olan oyun kolu gösteren bir Enum.UserInputType geçer.Çoğu durumda, bağlı oyun kolu Gamepad1 dir.
Bağlantı ve Bağlantının Kesilmesi Kontrolü
local UserInputService = game:GetService("UserInputService")
UserInputService.GamepadConnected:Connect(function(gamepad)
print("User has connected controller: " .. tostring(gamepad))
end)
UserInputService.GamepadDisconnected:Connect(function(gamepad)
print("User has disconnected controller: " .. tostring(gamepad))
end)
Ayrı bir kontrolörün UserInputService:GetGamepadConnected() yöntemi kullanılarak bağlı olup olmadığını da sorgulayabilirsiniz.Bu bir argüman olarak Enum.UserInputType alır ve yalnızca Gamepad1 değerlerini kabul eder Gamepad8 .
Soru Özel Gamepad Bağlantısı
local UserInputService = game:GetService("UserInputService")if UserInputService:GetGamepadConnected(Enum.UserInputType.Gamepad1) thenprint("Gamepad1 is connected")elseif UserInputService:GetGamepadConnected(Enum.UserInputType.Gamepad2) thenprint("Gamepad2 is connected")end
Desteklenen girişleri doğrula
Oyun konsollarının farklı giriş setlerine sahip olabileceğinden, hangi girişlerin desteklendiğini UserInputService:GetSupportedGamepadKeyCodes() ile kontrol etmelisiniz.Bu yöntem bir argüman olarak bir Enum.UserInputType alır ve belirtilen kontrolör için tüm mevcut girişlerin bir listesi ile bir tablo döndürür.
Desteklenen Girişler Doğrulanıyor
local UserInputService = game:GetService("UserInputService")local availableInputs = UserInputService:GetSupportedGamepadKeyCodes(Enum.UserInputType.Gamepad2)print("This controller supports the following controls:")for _, control in availableInputs doprint(control)end
Giriş almak
oyun konsollarına ve diğer giriş kaynaklarına kontroller bağlamak için yararlıdır, örneğin fare ve klavye girişleri veya mobil dokunma ekran düğmeleri, veya birden fazla işlevin tek bir düğme girişine bağlanması için herhangi bir cihazda.Örneğin, aşağıdaki kod örneği bir OpenSpellBook eylemini oyun konsolunun ButtonR2 düğmesine ve klavyenin B anahtarbağlar.
Kontekst Eylem Hizmeti Eylem Bağlama
local ContextActionService = game:GetService("ContextActionService")
local function openSpellBook(actionName, inputState, inputObject)
if inputState == Enum.UserInputState.Begin then
-- Büyü kitabını aç
end
end
ContextActionService:BindAction("OpenSpellBook", openSpellBook, false, Enum.KeyCode.ButtonR2, Enum.KeyCode.B)
Alternatif olarak, kontrolleri doğrudan bir oyun kumandasından bağlamak için UserInputService kullanabilirsiniz.Bu hizmet aracılığıyla oyun kolu olaylarını tespit ederken, düğme ilk basıldığında InputBegan etkinliğini kullanın ve düğme serbest bırakıldığında InputEnded etkinliğini tespit edin.Kullanım işlevinde, InputObject.UserInputType özelliği hangi oyun kolu olayı ateşlediğini ve InputObject.KeyCode özel düğme veya çubuklarının onu ateş ettiğini gösterir.
KullanıcıGirişHizmeti Düğme Basma Tespiti
local UserInputService = game:GetService("UserInputService")
UserInputService.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Gamepad1 then
if input.KeyCode == Enum.KeyCode.ButtonA then
print("Button A pressed on Gamepad1")
end
end
end)
Oyun kolu durumu
Oyun konsolundaki tüm düğmelerin ve çubukların mevcut durumunu UserInputService:GetGamepadState() yöntemi ile tespit edebilirsiniz.Bu, deneyiminizde ayrı bir olay meydana geldiğinde mevcut oyun kumandası girişlerini kontrol etmeniz gerektiğinde, karakter bir nesneye dokunduğunda belirli düğmelerin basılıp basılmadığını kontrol etmek gibi durumlarda yararlıdır, örneğin bir karakter bir nesneye dokunduğunda belirli düğmeler basılıp basılmadığını kontrol etmek.
Oyun Konsolu Girişlerinin Durumunu Kontrol Etme
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local leftFoot = character:WaitForChild("LeftFoot")
-- Sol ayağın bir şeyle temasa geçtiğinde, oyun kolu giriş durumunu kontrol edin
leftFoot.Touched:Connect(function(hit)
local state = UserInputService:GetGamepadState(Enum.UserInputType.Gamepad1)
for _, input in state do
-- ButtonR2 şu anda basılı tutuluyorsa, bir mesaj basın
if input.KeyCode == Enum.KeyCode.ButtonR2 and input.UserInputState == Enum.UserInputState.Begin then
print("Character's left foot touched something while holding right trigger")
end
end
end)
Basıncı tetikle
Giriş tetikleyicisinin Position.Z değerini kontrol ederek oyun kolu tetikleyicisine ne kadar baskı uygulandığını tespit edebilirsiniz.
Test Tetikleme Basıncı
local UserInputService = game:GetService("UserInputService")
UserInputService.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.Gamepad1 then
if input.KeyCode == Enum.KeyCode.ButtonL2 then
print("Pressure on left trigger has changed:", input.Position.Z)
elseif input.KeyCode == Enum.KeyCode.ButtonR2 then
print("Pressure on right trigger has changed:", input.Position.Z)
end
end
end)
Sıradan kontrol şemaları
Oyun konsolları çeşitli şekillerde ve boyutlarda gelir.Oyuncu girişinin herhangi bir yöntemiyle olduğu gibi, farklı oyun ve deneyimler arasında biraz tutarlılık oluşturmak en iyisidir.

Oyuncuların hemen oyun kumanda denetimleraşina ve rahat hissetmesine yardımcı olacak yaygın giriş bağları aşağıdakilerdir:
Giriş | Sıradan kullanım durumları |
---|---|
ButtonA | Oyuncu istemlerini veya GUI seçimlerini kabul eder. Aksi takdirde, atlama gibi temel eylemler için kullanılır. |
ButtonB | Oyuncu istemelerini veya GUI seçimlerini iptal eder. Ayrıca bir atış, rulo veya sprint gibi ikincil eylemler için kullanılır. |
Thumbstick1 | Genellikle karakter hareketiyle ilişkilidir. |
Thumbstick2 | Genellikle kamera hareketiyle ilişkilidir. |
ButtonL2 , ButtonR2 | Genellikle atış gibi temel eylemler için kullanılır. |
ButtonL1 , ButtonR1 , ButtonX , ButtonY | Yeniden yükleme, hedefleme veya envanter veya minimapa'ya erişme gibi ikincil eylemler. |
Haptik geri geri dönüş
Birçok oyun kolu kontrolörü, haptik geri geri dönüşsağlamak için motorlara sahiptir.Gürültü ve vibrasyon eklemek, bir oyuncunun deneyimini büyük ölçüde artırabilir ve görüntülerin veya seslerin ötesinde ince geri bildirim sağlayabilir.Motorları açmadan önce HapticService için kullanabilirsinizönce çeviren.
Vibrasyon desteği
Tüm kontrolörlerin motoru yok, bu nedenle haptik motorları kullanmaya çalışmadan önce destek kontrol etmek önemlidir.Verilen bir kontrolörün vibrasyon desteği olup olmadığını sorgulamak için HapticService:IsVibrationSupported() 'yi arayın.
Vibrasyon Desteğini Kontrol Et
local HapticService = game:GetService("HapticService")local gamepad = Enum.UserInputType.Gamepad1local isVibrationSupported = HapticService:IsVibrationSupported(gamepad)
Bazı kontrolörlerin çeşitli titreşim ölçekleri için çok sayıda motoru vardır.Bir oyun kolu titreşimi destekliyor mu kontrol ettikten sonra, HapticService:IsMotorSupported() aracılığıyla kullanmayı planladığınız motorları da desteklediğini kontrol etmelisiniz.
Desteklenen Motorları Kontrol Et
local HapticService = game:GetService("HapticService")local gamepad = Enum.UserInputType.Gamepad1local isVibrationSupported = HapticService:IsVibrationSupported(gamepad)if isVibrationSupported thenlocal largeMotor = HapticService:IsMotorSupported(gamepad, Enum.VibrationMotor.Large)local smallMotor = HapticService:IsMotorSupported(gamepad, Enum.VibrationMotor.Small)local leftTriggerMotor = HapticService:IsMotorSupported(gamepad, Enum.VibrationMotor.LeftTrigger)local rightTriggerMotor = HapticService:IsMotorSupported(gamepad, Enum.VibrationMotor.RightTrigger)local leftHandMotor = HapticService:IsMotorSupported(gamepad, Enum.VibrationMotor.LeftHand)local rightHandMotor = HapticService:IsMotorSupported(gamepad, Enum.VibrationMotor.RightHand)end
Boyut veya Konum | Açıklama |
---|---|
Large | Genel gürültü için daha büyük motor, yararlı. |
Small | Daha küçük motor, lastiklerin kayması gibi daha ince gürültülere, elektrik çarpması vb. yararlı |
LeftTrigger | Sol tetik altında. |
RightTrigger | Sağ tetik altında. |
LeftHand | Kontrolörün sol tarafında. |
RightHand | Kontrolörün sağ tarafında. |
Motorları etkinleştirin
Bir oyuncunun oyun kolu titreşimi destekliyor olduğunu doğruduktan sonra, belirli bir motoru HapticService:SetMotor().Bu yöntem oyun kolu ve titreşimin sıklığını argüman olarak alır.Amplitüde 0 ile 1 arasında herhangi bir değer olabilir.
Motoru Aktifleştirme
local HapticService = game:GetService("HapticService")local gamepad = Enum.UserInputType.Gamepad1local isVibrationSupported = HapticService:IsVibrationSupported(gamepad)if isVibrationSupported thenlocal largeMotor = HapticService:IsMotorSupported(gamepad, Enum.VibrationMotor.Large)if largeMotor thenHapticService:SetMotor(gamepad, Enum.VibrationMotor.Large, 0.5)endend
Kontrolör emülasyonu
Kontrolör Emülatörü doğru bir şekilde oyun kolu girişini Studio'da doğrudan emule edebilmenizi sağlar.Varsayılan denetleyici genel bir oyun konsolu, ancak üst sol seçici menüsünden PlayStation, Xbox ve Quest cihazları için alternatifler seçebilirsiniz.


Oynatma testi sırasında, deneyimi fare kullanarak sanal kontrolörle kontrol edebilirsiniz.
Ayrıca sağ üst köşede Haritaları düzenle düğmesine tıklayarak sanal kontrolör için anahtar haritalarını görüntüleyip düzenleyebilirsiniz, örneğin E ile ButtonL2 veya 9 ile ButtonA .Bu eşleştirmeler diğer Stüdyo ayarları gibi kaydedilir (kontrolör başına, kullanıcı başına, bilgisayar başına) ve hem emülatör penceresinde hem de 3D görüntü penceresinde oyun kolu etkinliklerine çevrilir.