UserInputService
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
UserInputService bir kullanıcının cihazında mevcut olan farklı giriş türlerini tespit etmek ve yakalamak için kullanılan bir hizmettir.
Bu hizmetin ana amacı, oyun konsolları, dokunma ekranları ve klavyeler gibi çok sayıda mevcut giriş türüyle işbirliği yapabilen deneyimlere izin vermektir.Cihaza bağlı olarak farklı eylemler yürütmesine izin verir LocalScript ve bununla birlikte, son kullanıcı için en iyi deneyimi sağlar.
Bu hizmetin bazı kullanımları, kullanıcıların GUI'ler, araçlar ve diğer oyun durumlarıyla etkileşim kurduklarında kullanıcı girişini algılamayı içerir.Kullanıcı girişini tespit etmek için, hizmet bir hizmet olayı aramalıdır.Örneğin, hizmet, kullanıcının bir mobil cihazın ekranına dokunduğunda UserInputService.TouchStarted , veya bir Xbox kontrolörü gibi bir oyun konsolunu cihazına bağladığında UserInputService.GamepadConnected kullanarak olayları tespit edebilir.
Bu hizmet yalnızca istemci tarafında olduğundan, yalnızca bir LocalScript veya bir ModuleScript tarafından gerekli olduğunda çalışacaktır LocalScript.KullanıcıGirişServisi sadece istemci tarafı olduğundan, oyundaki kullanıcılar sadece kendi girişlerini tespit edebilir - ve diğerlerin girişini değil.
Ayrıca bakın ContextActionService , işlevleri çoklu kullanıcı girişlerine bağlama izin veren bir hizmet.
Özet
Özellikler
Kullanıcının cihazının bir hızlandırıcıya sahip olup olmadığını tanımlar.
Kullanıcı tarafından kullanılan cihazın mevcut bir oyun kolu olup olmadığını tanımlar.
Kullanıcının cihazının bir jiroskopa sahip olup olmadığını tanımlar.
Kullanıcının cihazının bir klavyeye sahip olup olmadığını tanımlar.
Kullanıcının mouse'unun özgürce hareket edebileceği veya kilitli olacağını belirler.
Kullanıcının Mouse 'sindeki delta (değişim) çıkısını ölçeklendirir.
Kullanıcının cihazının bir fareye sahip olup olmadığını tanımlar.
Kullanıcı fare simgesi olarak kullanılan görüntünün içeriği ID'si.
Mouse simgesinin görülebilir olup olmadığını belirler.
Ekran üzeri klavyenin konumunu belirler.
Ekran üzeri klavyenin boyutunu belirler.
Ekranda bir klavyenin şu anda kullanıcının ekranında görülebilir olup olmadığını tanımlar.
Kullanıcının mevcut cihazının dokunmatik bir ekrana sahip olup olmadığını tanımlar.
Kullanıcının sanal gerçeklik kulaklığı kullandığını gösterir.
Yöntemler
Verilen Enum.UserInputType oyun kolu, verilen Enum.KeyCode ile eşleşen bir düğme destekliyor mu yoksa değil mi geri döndürür.
Şu anda bağlı olan bir dizi Enum.UserInputType oyun konsolunu döndürür.
Cihazın mevcut hızlandırma açıkladığı bir InputObject döndürür,
Cihazın mevcut yerçekim vektörünü tanımlayan bir InputObject döndürür.
Cihazın mevcut dönme vektörünü tanımlayan bir InputObject ve bir CFrame döndürür, açıklar
Mevcut olarak TextBox müşterinin şu anda odaklandığı üzerine döndürür.
Verilen ''gamepadNum'' ile bir oyun kolu bağlı olup olmadığını döndürür.
Verilen oyun konsolundaki tüm mevcut girişler için bir dizi InputObjects döndürür, her girişin son giriş durumunu temsil eder.
Talep edilen Enum.KeyCode için bir görüntü döndürür.
Şu anda basılmakta olan InputObjects ile ilişkili bir dizi döndürür keys .
Kullanıcının en yeni girişiyle ilişkili Enum.UserInputType döndürür.
Şu anda basılı olan fare düğmelerine karşılık gelen bir dizi InputObjects döndürür.
Son görüntülenen çerçevede oyuncunun Mouse konumunun değişimini piksel olarak geri verir. Sadece fare kilitliyse çalışır.
Oyuncunun mevcut ekran konumunu ekranın sol üst kısmına göre Mouse olarak döndürür.
Bir dizi gamepads bağlı ve öncelik sırasına göre aşağı yönlü GUI navigasyonu için etkinleştirilmiş olarak döndürür.
Kullanıcının belirli bir Enum.KeyCode girmesi için basması gereken bir anahtarı temsil eden bir dize döndürür.
Verilen Enum.UserInputType ile ilişkili olan bir oyun kolu tarafından desteklenen bir dizi KeyCodes döndürür.
Belirli bir düğmenin belirli bir oyun konsoluna basılıp basılmadığını belirler.
Verilen key 'nin şu anda basılı tutulup tutulmadığını döndürür.
Verilen mouse button 'nin şu anda basılı tutulup tutulmadığını döndürür.
Belirtilen Enum.UserInputType oyun kolu navigasyonu kontrol etmesine izin veriliyorsa gerçek döndürür, GuiObjects .
VR kulaklığının CFrame kısmını kullanıcı tarafından giyilen kulaklığın mevcut yönüne yerleştirir.
Belirtilen Gamepad 'in hareket edip etmediğini ayarlar, GuiObject navigatörünü hareket ettirebilir veya etmez.
Etkinlikler
Bir kullanıcı hızlandırıcıya sahip bir cihazı hareket ettirdiğinde ateş edilir. Roblox oyunu içinde gerçek dünya cihaz hareketini izlemek için kullanılır.
Kullanılabilir bir hızlandırıcıya sahip bir cihazda yerçekimi gücü değiştiğinde ateş edilir - mobil bir cihaz gibi.
Bir kullanıcı jiroskoplu bir cihazı döndürdüğünde ateş edilir.
Bir oyun kolu, istemciye bağlandığında ateş eder. Bağlanan oyun kolu ''gamepadNum'' geçer.
Bir oyun kolu, istemciden ayrıldığında ateş eder. Bağlantı kesilmiş olan oyun kolu Enum.UserInputType geçer.
Bir kullanıcı, bir İnsan-Bilgisayar Arayüzü cihazı aracılığıyla etkileşime başladığında ateş edilir - örneğin bir fare veya oyun kolu.
Bir kullanıcı, İnsan-Bilgisayar Arayüzü cihazı aracılığıyla nasıl etkileşime girdiğini değiştirdiğinde ateş edilir.
Bir kullanıcı, İnsan-Bilgisayar Arayüzü cihazı aracılığıyla etkileşime son verdiğinde ateş eder.
Müşteri karakterinin atlaması için bir istek yaptığında her zaman ateş eder.
Müşterinin Enum.UserInputType değiştirildiğinde ateş eder.
- PointerAction(wheel : number,pan : Vector2,pinch : number,gameProcessedEvent : boolean):RBXScriptSignal
Kullanıcı belirli bir işaret etme eylemi gerçekleştirdiğinde ateş eder (tekerlek, çekme, pan).
Müşteri bir TextBox üzerinde odaklanmayı kaybettiğinde ateş edilir.
Müşteri bir TextBox üzerinde odaklanırken ateş edilir.
- TouchDrag(dragDirection : Enum.SwipeDirection,numberOfTouches : number,gameProcessedEvent : boolean):RBXScriptSignal
Bir kullanıcı dokunma etkinleştirilmiş bir cihazdaki ekrandan parmağını serbest bıraktığında ateş edilir - mobil cihazın ekranı gibi.
- TouchLongPress(touchPositions : Array,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Bir kullanıcı, bir dokunma etkinleştirilmiş cihazdaki aynı ekran konumunda kısa bir süre için en az bir parmağı tutarken ateş edilir - örneğin, bir mobil cihazın ekranı.
Bir kullanıcı parmağını bir TouchEnabled tablet veya akıllı telefon gibi bir cihaz üzerinde hareket ettirdiğinde ateş eder.
- TouchPan(touchPositions : Array,totalTranslation : Vector2,velocity : Vector2,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Bir kullanıcı en az bir parmağı bir TouchEnabled cihazına sürüklediğinde ateş edilir - mobil cihazın ekranı gibi.
- TouchPinch(touchPositions : Array,scale : number,velocity : number,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Bir kullanıcı parmaklarını bir TouchEnabled cihazına basınca ateş edildi - mobil cihazın ekranı gibi.
- TouchRotate(touchPositions : Array,rotation : number,velocity : number,state : Enum.UserInputState,gameProcessedEvent : boolean):RBXScriptSignal
Bir kullanıcı bir TouchEnabled cihazda iki parmağı döndürdüğünde ateş eder - mobil cihazın ekranı gibi.
Bir kullanıcı parmaklarını bir Dokunma Etkinleştirilmiş cihaza yerleştirdiğinde ateş edilir - örneğin Apple iPad veya iPhone'un ekranı veya Google Android telefonu.
- TouchSwipe(swipeDirection : Enum.SwipeDirection,numberOfTouches : number,gameProcessedEvent : boolean):RBXScriptSignal
Bir kullanıcı parmaklarını ekrana yerleştirdiğinde, ekranda gezinir ve belirli bir hızda hareket ederek parmaklarını kaldırır, TouchEnabled bir cihazda yangınlar.
Bir kullanıcı parmağını bir TouchEnabled cihazına dokundurduğunda ateşlenir - mobil cihazın ekranı gibi.
Bir kullanıcı oyun dünyasına bir TouchEnabled cihazda dokunduğunda ateş eder - mobil cihazın ekranı gibi.
Roblox istemcisinin penceresi kullanıcının ekranına odaklanmayı kaybettiğinde ateş eder.
Roblox istemcisinin penceresi kullanıcının ekranına odaklanırken ateş eder.
Özellikler
AccelerometerEnabled
Bu özellik, kullanıcının cihazının bir hızlandırıcıya sahip olup olmadığını tanımlar
Bir hızlandırıcı, hızlanmayı ölçen çoğu mobil cihazda bulunan bir bileşendir (hız değişimi).
Örneğin, aşağıdaki kod parçacığı, kullanıcının cihazının bir hızlandırıcıya sahip olup olmadığını nasıl kontrol edeceğini gösterir.
local UserInputService = game:GetService("UserInputService")local accelerometerEnabled = UserInputService.AccelerometerEnabledif accelerometerEnabled thenprint("Accelerometer enabled!")elseprint("Accelerometer not enabled!")end
Cihazın bir hızlandırıcısı varsa, UserInputService:GetDeviceAcceleration() işlevini kullanarak veya cihazın hızlandırması değiştiğinde UserInputService.DeviceAccelerationChanged etkinliğini izleyerek mevcut hızlandırmasını alabilirsiniz.
As UserInputService yalnızca istemci tarafında olduğundan, bu özellik yalnızca bir LocalScript içinde kullanılabilir.
Kod Örnekleri
This code adds a force on a part so that it falls in the direction of actual gravity relative to the user's device. In order for this example to work as expected, it must be placed in a LocalScript and the user's device must have an accelerometer.
local Workspace = game:GetService("Workspace")
local UserInputService = game:GetService("UserInputService")
local ball = script.Parent:WaitForChild("Ball")
local mass = ball:GetMass()
local gravityForce = ball:WaitForChild("GravityForce")
local function moveBall(gravity)
gravityForce.Force = gravity.Position * Workspace.Gravity * mass
end
if UserInputService.AccelerometerEnabled then
UserInputService.DeviceGravityChanged:Connect(moveBall)
end
GamepadEnabled
Bu özellik, bir kullanıcı tarafından kullanılan cihazın mevcut bir oyun kolu olup olmadığını tanımlar.Oyun konsolları mevcutsa, bir liste bağlı oyun konsolları almak için UserInputService:GetConnectedGamepads() kullanabilirsiniz.
As UserInputService yalnızca istemci tarafında olduğundan, bu özellik yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
GyroscopeEnabled
Bu özellik, kullanıcının cihazının bir jiroskopa sahip olup olmadığını tanımlar.
Bir jiroskop, yön ve dönme hızını algılayan çoğu mobil cihazda bulunan bir bileşendir.
Bir kullanıcının cihazı bir jiroskopa sahipse, UserInputService:GetDeviceRotation() fonksiyonunu ve UserInputService.DeviceRotationChanged etkinliğini kullanarak oyununuza dahil edebilirsiniz.
local UserInputService = game:GetService("UserInputService")local gyroIsEnabled = UserInputService.GyroscopeEnabledif gyroIsEnabled thenprint("Gyroscope is enabled!")elseprint("Gyroscope is not enabled!")end
As UserInputService yalnızca istemci tarafında olduğundan, bu özellik yalnızca bir LocalScript içinde kullanılabilir.
KeyboardEnabled
Bu özellik, kullanıcının cihazının bir klavyeye sahip olup olmadığını tanımlar.Bu özellik, kullanıcının cihazında mevcut bir klavye varsa true ve yoksa false dır.
Kullanıcının mevcut bir klavyeye sahip olup olmadığını belirlemek için kullanılabilir - ki bu, klavye girişi kontrol etmek istiyorsanız önemli olabilir UserInputService:IsKeyDown() veya UserInputService:GetKeysPressed() klavye girişi kontrol etmek için kullanabilirsiniz.
As UserInputService yalnızca istemci tarafında olduğundan, bu özellik yalnızca bir LocalScript içinde kullanılabilir.
Kod Örnekleri
Bu örnek, KlavyeAktifleştirildi true ve KlavyeAktifleştirildi false ise "Kullanıcının cihazında kullanılabilir bir klavye var!" ifade eder ve KlavyeAktifleştirildi false ise "Kullanıcının cihazında kullanılabilir bir klavye yok!" ifade eder.
local UserInputService = game:GetService("UserInputService")
if UserInputService.KeyboardEnabled then
print("The user's device has an available keyboard!")
else
print("The user's device does not have an available keyboard!")
end
MouseBehavior
Bu özellik, kullanıcının mouse'unun Enum.MouseBehavior enum'e göre nasıl davrandığını ayarlar. Üç değere ayarlanabilir:
- Enum.MouseBehavior.Default — Fare, kullanıcının ekranı etrafında özgürce hareket eder.
- Enum.MouseBehavior.LockCenter — Fare kilitli ve kullanıcının ekranının merkezinden hareket edemiyor.
- Enum.MouseBehavior.LockCurrentPosition — Fare kilitli olduğundan, kilit sırasında kullanıcının ekranındaki mevcut konumundan hareket edemez.
Bu özelliğin değeri, etkinlik izleme fare hareketinin hassasiyetini etkilemez.Örneğin, GetMouseDelta aynı Vector2 ekran pozisyonunu piksel olarak geri döndürür, farenin kilitli olup olmadığına bakılmaksızın kullanıcının ekranında özgürce hareket edebilir.Sonuç olarak, kamerayı kontrol eden varsayılan kodlar bu özellikten etkilenmez.
Bu özellik, oyuncunun sağ fare düğmesi aşağıda olmadığında etkinleştirilen bir ile geçersiz kılınır, eğer oyuncunun sağ fare düğmesi aşağıda değilse.
Fare kilitliyse, UserInputService.InputChanged oyuncu fareyi hareket ettirdiğinde hala ateşlenecek ve oyuncunun hareket ettirdiği Delta'dan geçecektir.Ayrıca, oyuncu oyundan atılırsa, fare zorla kilidi açılacaktır.
As UserInputService yalnızca istemci tarafında olduğundan, bu özellik yalnızca bir LocalScript içinde kullanılabilir.
Kod Örnekleri
Bu örnek, bir oyuncunun FieldOfView() ve MouseDeltaSensitivity() 'sini azaltan bir dürbün kodu oluşturur, bir oyuncunun MouseEnabled() 'sini bıraktığında.Ayrıca, senaryo oyuncunun Camera mouse'un tıklama dünya konumuna yönlendirilmesini sağlar Vector3 .
Oyuncu tekrar fare tıklamalarını bıraktığında, oyuncunun kamerası aynı görüş alanı ve ile önce oyuncu tarafından yakınlaştırıldığı gibi aynı alana geri döner.
Oyuncu dürbünleri kullandığında, senaryo oyuncunun mouse'unu ekranın merkezine kilitleerek oyuncunun MouseBehavior() 'sini KilitleCenter'a ayarlar.Oyuncunun kamerası, oyuncunun fareyi ekranda InputObject.Delta değiştirdiğine göre hareket eder, çünkü InputChanged() mouse'un ekranda değişen Vector2 konumunu gösteren özellik tarafından geçirilir.
Bu örnekin beklenen şekilde çalışması için, bir LocalScript içine yerleştirilmelidir.
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.CharacterAdded:Wait()
local head = character:WaitForChild("Head", false)
local mouse = player:GetMouse()
local zoomed = false
local camera = game.Workspace.CurrentCamera
local target = nil
local originalProperties = {
FieldOfView = nil,
_CFrame = nil,
MouseBehavior = nil,
MouseDeltaSensitivity = nil,
}
local AngleX, TargetAngleX = 0, 0
local AngleY, TargetAngleY = 0, 0
-- Kamera, zoom'dan önce CFrame ve FieldOfView'e sıfırla
local function ResetCamera()
target = nil
camera.CameraType = Enum.CameraType.Custom
camera.CFrame = originalProperties._CFrame
camera.FieldOfView = originalProperties.FieldOfView
UserInputService.MouseBehavior = originalProperties.MouseBehavior
UserInputService.MouseDeltaSensitivity = originalProperties.MouseDeltaSensitivity
end
local function ZoomCamera()
-- Kameranın kod tarafından değiştirilmesine izin ver
camera.CameraType = Enum.CameraType.Scriptable
-- Küçültmeden önce kameranın özelliklerini depolayın
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Büyütme kamerası
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Fareyi kilitle ve yavaşlat
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Zoom açılarını sıfırla
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Kamera yakınlaştırması/uzaklaştırması geçişi
local function MouseClick()
if zoomed then
-- Kamerayı genişletmez Unzoom camera
ResetCamera()
else
-- Kamerada yakınlaş
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- daha yüksek bir şey aşağı ve yukarı bakmayı zorlaştırır; 0~1 arasında her şeyi önerin
local smoothness = 0.05 -- 0~1 arasında herhangi bir şey önerin
local delta = Vector2.new(input.Delta.x / sensitivity, input.Delta.y / sensitivity) * smoothness
local X = TargetAngleX - delta.y
local Y = TargetAngleY - delta.x
TargetAngleX = (X >= 80 and 80) or (X <= -80 and -80) or X
TargetAngleY = (Y >= 80 and 80) or (Y <= -80 and -80) or Y
AngleX = AngleX + (TargetAngleX - AngleX) * 0.35
AngleY = AngleY + (TargetAngleY - AngleY) * 0.15
camera.CFrame = CFrame.new(head.Position, target)
* CFrame.Angles(0, math.rad(AngleY), 0)
* CFrame.Angles(math.rad(AngleX), 0, 0)
end
end
local function InputBegan(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
MouseClick()
end
end
local function InputChanged(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseMovement then
MouseMoved(input)
end
end
if UserInputService.MouseEnabled then
UserInputService.InputBegan:Connect(InputBegan)
UserInputService.InputChanged:Connect(InputChanged)
end
MouseDeltaSensitivity
Bu özellik, kullanıcının Mouse duyarlılığını belirler.
Hassasiyet, fiziksel fare hareketinin oyun içi fare hareketine dönüştürülebilir derecesini belirler.Bu, hassas olayların fare hareketini nasıl izlediğini ayarlamak için kullanılabilir, örneğin GetMouseDelta , fare hareketine.
Bu özellik, fare simgesinin hareketini etkilemez.Ayrıca, müşterinin Ayarları menüsündeki Ayarlar sekmesinde bulunan Kamera Hassasiyeti ayarını da etkilemez, bu da olay izleme fare hareketinin hassasiyetini ayarlar.
Bu özelliğin maksimum değeri 10 ve minimum değeri 0'dır.Daha düşük bir değer daha düşük duyarlılığa ve daha yüksek bir değer daha yüksek duyarlılığa karşılık gelir.
Hassasiyet 0 olduğunda, fare hareketini izleyen olaylar hala ateş edecek, ancak fare konumundaki değişikliği gösteren tüm parametreler ve özellikler Vector2.new() veya Vector3.new() durumunda InputObject.Delta dönecek.Örneğin, GetMouseDelta daima dönecektir (0, 0).
Kod Örnekleri
Bu örnek, bir oyuncunun FieldOfView() ve MouseDeltaSensitivity() 'sini azaltan bir dürbün kodu oluşturur, bir oyuncunun MouseEnabled() 'sini bıraktığında.Ayrıca, senaryo oyuncunun Camera mouse'un tıklama dünya konumuna yönlendirilmesini sağlar Vector3 .
Oyuncu tekrar fare tıklamalarını bıraktığında, oyuncunun kamerası aynı görüş alanı ve ile önce oyuncu tarafından yakınlaştırıldığı gibi aynı alana geri döner.
Oyuncu dürbünleri kullandığında, senaryo oyuncunun mouse'unu ekranın merkezine kilitleerek oyuncunun MouseBehavior() 'sini KilitleCenter'a ayarlar.Oyuncunun kamerası, oyuncunun fareyi ekranda InputObject.Delta değiştirdiğine göre hareket eder, çünkü InputChanged() mouse'un ekranda değişen Vector2 konumunu gösteren özellik tarafından geçirilir.
Bu örnekin beklenen şekilde çalışması için, bir LocalScript içine yerleştirilmelidir.
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.CharacterAdded:Wait()
local head = character:WaitForChild("Head", false)
local mouse = player:GetMouse()
local zoomed = false
local camera = game.Workspace.CurrentCamera
local target = nil
local originalProperties = {
FieldOfView = nil,
_CFrame = nil,
MouseBehavior = nil,
MouseDeltaSensitivity = nil,
}
local AngleX, TargetAngleX = 0, 0
local AngleY, TargetAngleY = 0, 0
-- Kamera, zoom'dan önce CFrame ve FieldOfView'e sıfırla
local function ResetCamera()
target = nil
camera.CameraType = Enum.CameraType.Custom
camera.CFrame = originalProperties._CFrame
camera.FieldOfView = originalProperties.FieldOfView
UserInputService.MouseBehavior = originalProperties.MouseBehavior
UserInputService.MouseDeltaSensitivity = originalProperties.MouseDeltaSensitivity
end
local function ZoomCamera()
-- Kameranın kod tarafından değiştirilmesine izin ver
camera.CameraType = Enum.CameraType.Scriptable
-- Küçültmeden önce kameranın özelliklerini depolayın
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Büyütme kamerası
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Fareyi kilitle ve yavaşlat
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Zoom açılarını sıfırla
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Kamera yakınlaştırması/uzaklaştırması geçişi
local function MouseClick()
if zoomed then
-- Kamerayı genişletmez Unzoom camera
ResetCamera()
else
-- Kamerada yakınlaş
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- daha yüksek bir şey aşağı ve yukarı bakmayı zorlaştırır; 0~1 arasında her şeyi önerin
local smoothness = 0.05 -- 0~1 arasında herhangi bir şey önerin
local delta = Vector2.new(input.Delta.x / sensitivity, input.Delta.y / sensitivity) * smoothness
local X = TargetAngleX - delta.y
local Y = TargetAngleY - delta.x
TargetAngleX = (X >= 80 and 80) or (X <= -80 and -80) or X
TargetAngleY = (Y >= 80 and 80) or (Y <= -80 and -80) or Y
AngleX = AngleX + (TargetAngleX - AngleX) * 0.35
AngleY = AngleY + (TargetAngleY - AngleY) * 0.15
camera.CFrame = CFrame.new(head.Position, target)
* CFrame.Angles(0, math.rad(AngleY), 0)
* CFrame.Angles(math.rad(AngleX), 0, 0)
end
end
local function InputBegan(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
MouseClick()
end
end
local function InputChanged(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseMovement then
MouseMoved(input)
end
end
if UserInputService.MouseEnabled then
UserInputService.InputBegan:Connect(InputBegan)
UserInputService.InputChanged:Connect(InputChanged)
end
MouseEnabled
Bu özellik, kullanıcının cihazının bir fareye sahip olup olmadığını tanımlar.Bu özellik, kullanıcının cihazında mevcut bir fare var olduğunda true ve yok olduğunda false dir.
local UserInputService = game:GetService("UserInputService")if UserInputService.MouseEnabled thenprint("The user's device has an available mouse!")elseprint("The user's device does not have an available mouse!")end
Bunu UserInputService fare işlevleri gibi UserInputService:GetMouseLocation() kullanmadan önce kontrol etmek önemlidir.
As UserInputService yalnızca istemci tarafında olduğundan, bu özellik yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Kod Örnekleri
Bu örnek, bir oyuncunun FieldOfView() ve MouseDeltaSensitivity() 'sini azaltan bir dürbün kodu oluşturur, bir oyuncunun MouseEnabled() 'sini bıraktığında.Ayrıca, senaryo oyuncunun Camera mouse'un tıklama dünya konumuna yönlendirilmesini sağlar Vector3 .
Oyuncu tekrar fare tıklamalarını bıraktığında, oyuncunun kamerası aynı görüş alanı ve ile önce oyuncu tarafından yakınlaştırıldığı gibi aynı alana geri döner.
Oyuncu dürbünleri kullandığında, senaryo oyuncunun mouse'unu ekranın merkezine kilitleerek oyuncunun MouseBehavior() 'sini KilitleCenter'a ayarlar.Oyuncunun kamerası, oyuncunun fareyi ekranda InputObject.Delta değiştirdiğine göre hareket eder, çünkü InputChanged() mouse'un ekranda değişen Vector2 konumunu gösteren özellik tarafından geçirilir.
Bu örnekin beklenen şekilde çalışması için, bir LocalScript içine yerleştirilmelidir.
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.CharacterAdded:Wait()
local head = character:WaitForChild("Head", false)
local mouse = player:GetMouse()
local zoomed = false
local camera = game.Workspace.CurrentCamera
local target = nil
local originalProperties = {
FieldOfView = nil,
_CFrame = nil,
MouseBehavior = nil,
MouseDeltaSensitivity = nil,
}
local AngleX, TargetAngleX = 0, 0
local AngleY, TargetAngleY = 0, 0
-- Kamera, zoom'dan önce CFrame ve FieldOfView'e sıfırla
local function ResetCamera()
target = nil
camera.CameraType = Enum.CameraType.Custom
camera.CFrame = originalProperties._CFrame
camera.FieldOfView = originalProperties.FieldOfView
UserInputService.MouseBehavior = originalProperties.MouseBehavior
UserInputService.MouseDeltaSensitivity = originalProperties.MouseDeltaSensitivity
end
local function ZoomCamera()
-- Kameranın kod tarafından değiştirilmesine izin ver
camera.CameraType = Enum.CameraType.Scriptable
-- Küçültmeden önce kameranın özelliklerini depolayın
originalProperties._CFrame = camera.CFrame
originalProperties.FieldOfView = camera.FieldOfView
originalProperties.MouseBehavior = UserInputService.MouseBehavior
originalProperties.MouseDeltaSensitivity = UserInputService.MouseDeltaSensitivity
-- Büyütme kamerası
target = mouse.Hit.Position
local eyesight = head.Position
camera.CFrame = CFrame.new(eyesight, target)
camera.Focus = CFrame.new(target)
camera.FieldOfView = 10
-- Fareyi kilitle ve yavaşlat
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
UserInputService.MouseDeltaSensitivity = 1
-- Zoom açılarını sıfırla
AngleX, TargetAngleX = 0, 0
AngleY, TargetAngleY = 0, 0
end
-- Kamera yakınlaştırması/uzaklaştırması geçişi
local function MouseClick()
if zoomed then
-- Kamerayı genişletmez Unzoom camera
ResetCamera()
else
-- Kamerada yakınlaş
ZoomCamera()
end
zoomed = not zoomed
end
local function MouseMoved(input)
if zoomed then
local sensitivity = 0.6 -- daha yüksek bir şey aşağı ve yukarı bakmayı zorlaştırır; 0~1 arasında her şeyi önerin
local smoothness = 0.05 -- 0~1 arasında herhangi bir şey önerin
local delta = Vector2.new(input.Delta.x / sensitivity, input.Delta.y / sensitivity) * smoothness
local X = TargetAngleX - delta.y
local Y = TargetAngleY - delta.x
TargetAngleX = (X >= 80 and 80) or (X <= -80 and -80) or X
TargetAngleY = (Y >= 80 and 80) or (Y <= -80 and -80) or Y
AngleX = AngleX + (TargetAngleX - AngleX) * 0.35
AngleY = AngleY + (TargetAngleY - AngleY) * 0.15
camera.CFrame = CFrame.new(head.Position, target)
* CFrame.Angles(0, math.rad(AngleY), 0)
* CFrame.Angles(math.rad(AngleX), 0, 0)
end
end
local function InputBegan(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
MouseClick()
end
end
local function InputChanged(input, _gameProcessedEvent)
if input.UserInputType == Enum.UserInputType.MouseMovement then
MouseMoved(input)
end
end
if UserInputService.MouseEnabled then
UserInputService.InputBegan:Connect(InputBegan)
UserInputService.InputChanged:Connect(InputChanged)
end
MouseIcon
The MouseIcon özelliği, işaret olarak kullanılan görüntüyü belirler.Boşsa, varsayılan bir ok kullanılır.Kurma işaretleyici bir ImageButton , TextButton , TextBox veya ProximityPrompt gibi belirli UI nesnelerinin üzerinde gezinirken, bu görüntü geçersiz kalacak ve geçici olarak göz ardı edilecektir.
Okutucuyu tamamen gizlemek için, transparan bir görüntü kullanmayın , yerine UserInputService.MouseIconEnabled false'a ayarlayın.
Kod Örnekleri
Bu örnek, kullanıcının fare simgesini bir ejderha görüntüsü gibi görünmesi için değiştirir.
local UserInputService = game:GetService("UserInputService")
-- İşaretçiyi daha önce ayarlandığı gibi geri yüklemek için, bir değişken kaydedilmesi gerekecektir
local savedCursor = nil
local function setTemporaryCursor(cursor: string)
-- Şu anda kaydedilmediyse yalnızca kaydedilmiş kurör güncellenir
if not savedCursor then
savedCursor = UserInputService.MouseIcon
end
UserInputService.MouseIcon = cursor
end
local function clearTemporaryCursor()
-- Sadece geri yüklemek için kaydedilmiş bir kurma işareti varsa fare imlecini yeniden yükleyin
if savedCursor then
UserInputService.MouseIcon = savedCursor
-- Aynı kuruluşu iki kez geri yüklemeyin (başka bir senaryoyu üzerine yazabilir)
savedCursor = nil
end
end
setTemporaryCursor("http://www.roblox.com/asset?id=163023520")
print(UserInputService.MouseIcon)
clearTemporaryCursor()
print(UserInputService.MouseIcon)
MouseIconEnabled
Bu özellik, Mouse simgesinin görülebilir olup olmadığını belirler; true fare simgesi görülebilir olduğunda, false değil.
Örneğin, aşağıdaki kod parçacığı mouse'un simgesini gizler.
local UserInputService = game:GetService("UserInputService")UserInputService.MouseIconEnabled = false
As UserInputService yalnızca istemci tarafında olduğundan, bu özellik yalnızca bir LocalScript içinde kullanılabilir.
Kod Örnekleri
This example hides the mouse icon while the player beings using their keyboard, such as to chat or enter text into a TextBox. The mouse icon reappears when the user resumes mouse input.
This uses the LastInputType() event to determine when the user begins keyboard input and mouse input - based on the value of the lastInputType argument.
In order for this example to work as expected, it should be placed in a LocalScript.
local UserInputService = game:GetService("UserInputService")
local mouseInput = {
Enum.UserInputType.MouseButton1,
Enum.UserInputType.MouseButton2,
Enum.UserInputType.MouseButton3,
Enum.UserInputType.MouseMovement,
Enum.UserInputType.MouseWheel,
}
local keyboard = Enum.UserInputType.Keyboard
local function toggleMouse(lastInputType)
if lastInputType == keyboard then
UserInputService.MouseIconEnabled = false
return
end
for _, mouse in pairs(mouseInput) do
if lastInputType == mouse then
UserInputService.MouseIconEnabled = true
return
end
end
end
UserInputService.LastInputTypeChanged:Connect(toggleMouse)
OnScreenKeyboardPosition
Bu özellik, ekranda görünen klavyenin piksel cinsinden konumunu tanımlar. Klavyenin konumu görünür olmadığında Vector2.new(0, 0) dır.
As sadece istemci tarafında olduğundan, bu özellik yalnızca bir veya ile kullanılabilir .
Ayrıca bakın OnScreenKeyboardVisible ve OnScreenKeyboardSize .
OnScreenKeyboardSize
Bu özellik, ekranda görünen klavyenin piksel cinsinden boyutunu tanımlar. Klavyenin boyutu görünür olmadığında Vector2.new(0, 0) dır.
As sadece istemci tarafında olduğundan, bu özellik yalnızca bir veya ile kullanılabilir .
Ayrıca bakın OnScreenKeyboardVisible ve OnScreenKeyboardPosition .
OnScreenKeyboardVisible
Bu özellik, ekranda bir klavyenin şu anda kullanıcının ekranında görülebilir olup olmadığını tanımlar.
As sadece istemci tarafında olduğundan, bu özellik yalnızca bir veya ile kullanılabilir .
Ayrıca bakın OnScreenKeyboardSize ve OnScreenKeyboardPosition .
PreferredInput
TouchEnabled
Bu özellik, kullanıcının mevcut cihazının dokunmatik bir ekrana sahip olup olmadığını tanımlar.
Özellik, kullanıcının cihazının dokunmatik bir ekrana sahip olup olmadığını belirlemek ve dolayısıyla dokunma olaylarının ateşleneceğini belirlemek için kullanılır.TouchEnabled true ise, UserInputService.TouchStarted ve UserInputService.TouchEnded gibi KullanıcıGirişHizmeti etkinliklerini kullanarak bir kullanıcının cihazının ekranına dokunmaya başladığı ve durduğu anı izleyebilirsiniz.
Aşağıdaki kod parçacığı, kullanıcının cihazının dokunmatik bir ekrana sahip olup olmadığını basar.
local UserInputService = game:GetService("UserInputService")if UserInputService.TouchEnabled thenprint("The user's device has a touchscreen!")elseprint("The user's device does not have a touchscreen!")end
Ayrıca bakın:
VREnabled
Bu özellik, kullanıcının sanal gerçeklik (VR) cihazı kullandığını tanımlar.
VR cihazı etkinleştirildiyse, yerleşimi ve hareketini UserInputService:GetUserCFrame() gibi işlevler aracılığıyla 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
As UserInputService yalnızca istemci tarafında olduğundan, 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
GamepadSupports
Bu işlev, verilen Enum.UserInputType oyun kolu, verilen Enum.KeyCode ile eşleşen bir düğme desteklediğini döndürür.Bu işlev, geçerli oyun kolu girişlerini belirlemek için kullanılır.
Hangi Enum.UserInputType oyun konsollarının bağlı olduğunu belirlemek için, UserInputService:GetConnectedGamepads() kullanın.
As UserInputService yalnızca istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Parametreler
Oyun kolu Enum.UserInputType 'inin.
Soruşturulan düğmenin Enum.KeyCode 'si.
Dönüşler
Verilen oyun kolu, verilen Enum.KeyCode ile eşleşen bir düğmeyi destekliyor mu?
GetConnectedGamepads
Bu işlev şu anda bağlı olan bir dizi Enum.UserInputType oyun konsolunu döndürür.Eğer oyun konsolları bağlanmazsa, bu dizi boş olacaktır.Ayrıca, sadece oyun konsolları olan UserInputType nesnelerini döndürür.Örneğin, bu etkinlik bağlı bir Gamepad1 nesnesi döndürecek, ancak bir Klavye nesnesi değil.
Örneğin, aşağıdaki kod parçacığı bağlı oyun konsollarını alır ve connectedGamepads adlı değişkende saklar.
local UserInputService = game:GetService("UserInputService")local connectedGamepads = UserInputService:GetConnectedGamepads()
Belirli bir oyun kolu bağlı olup olmadığını kontrol etmek için UserInputService:GetGamepadConnected() kullanın.
As UserInputService yalnızca istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Dönüşler
Kullanıcının cihazına bağlı oyun konsollarına karşılık gelen bir dizi UserInputTypes .
GetDeviceAcceleration
GetDeviceAcceleration işlevi, kullanıcının cihazının mevcut hızlandırma oranını belirler.Cihazın mevcut hızlanmasını tanımlayan bir InputObject döndürür, ki bu da cihazın hızlanmasını tanımlar.
Bunun çalışması için, kullanıcının cihazının bir hızlandırıcısı aktif olmalıdır.Bir kullanıcının cihazının bir hızlandırıcıya sahip olup olmadığını kontrol etmek için, UserInputService.AccelerometerEnabled özelliğini kontrol edebilirsiniz.
Kullanıcının cihazının hızlandırma değişikliklerinin yerine izlemek istiyorsanız, UserInputService.DeviceAccelerationChanged etkinliğini kullanabilirsiniz.
Yalnızca yerel olarak ateş olduğundan, sadece bir LocalScript içinde kullanılabilir.
Dönüşler
Kod Örnekleri
This example checks if a user's device has an enabled accelerometer and, if true, it outputs the current acceleration.
local UserInputService = game:GetService("UserInputService")
if UserInputService.AccelerometerEnabled then
local acceleration = UserInputService:GetDeviceAcceleration().Position
print(acceleration)
else
warn("Cannot get device acceleration because device does not have an enabled accelerometer!")
end
GetDeviceGravity
Bu işlev, cihazın mevcut yerçekim vektörünü tanımlayan bir InputObject döndürür.
Yerçekimi vektörü, cihazın yerçekimi gücüne ilişkin gerçek dünya odaklı yönüyle belirlenir.Örneğin, bir cihaz mükemmel bir şekilde dik (portre) ise, yerçekimi vektörü Vector3.new(0, 0, -9.18) dir.Cihazın sol tarafı aşağı işaret ediyorsa, vektör Vector3.new(9.81, 0, 0) olur.Son olarak, cihazın arkası aşağı işaret ediyorsa, vektör Vector3.new(0, -9.81, 0) dir.
Bu işlev, kullanıcının cihazının oyun içinde yerçekimine etki etmesini veya bir top gibi oyun içi nesneleri hareket ettirmesini etkinleştirmek için kullanılabilir.
Yer çekimi yalnızca bir gyroskop ile etkinleştirilmiş bir cihaz kullanan oyuncular için izlenir - mobil bir cihaz gibi.
Bir kullanıcının cihazının bir jiroskopu var olup olmadığını kontrol etmek için, UserInputService.GyroscopeEnabled değerini kontrol edin.Cihazda bir jiroskop aktifse, kullanıcının cihazındaki yerçekimi gücünün değiştiği zamanı izlemek için UserInputService.DeviceGravityChanged etkinliğini de kullanabilirsiniz.
As UserInputService yalnızca istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Dönüşler
Kod Örnekleri
This example implements a level where the bubble will move along the X and Z axes depending on the device's current gryoscope position.
local UserInputService = game:GetService("UserInputService")
local bubble = script.Parent:WaitForChild("Bubble")
local camera = workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Scriptable
camera.CFrame = CFrame.new(0, 20, 0) * CFrame.Angles(-math.pi / 2, 0, 0)
if UserInputService.GyroscopeEnabled then
-- Bind event to when gyroscope detects change
UserInputService.DeviceGravityChanged:Connect(function(accel)
-- Move the bubble in the world based on the gyroscope data
bubble.Position = Vector3.new(-8 * accel.Position.X, 1.8, -8 * accel.Position.Z)
end)
end
GetDeviceRotation
Bu işlev bir InputObject ve bir CFrame dönen cihazın mevcut dönme vektörünü tanımlayan bir döndürür.
Bunun bir InputObject ile ateş edilmesi gerekir.Giriş nesnesinin Pozisyon özelliği, her yerel cihaz eksenindeki toplam dönüşü izleyen bir Enum.InputType.Gyroscope dır.
Cihaz dönüşü yalnızca gyroscope ile etiketli cihazlarda izlenebilir.
Bu işlev yerel olarak ateş olduğundan, sadece bir LocalScript içinde kullanılabilir.
Dönüşler
İki özellik içeren bir tupl:
- Delta özelliği, son olarak gerçekleşen dönüş miktarını tanımlar
- CFRam, cihazın varsayılan referans çerçevesine göre mevcut dönüşüdür.
Kod Örnekleri
This example checks if a user's device has an enabled gyroscope and, if true, it outputs the device's current CFrame.
local UserInputService = game:GetService("UserInputService")
if UserInputService.GyroscopeEnabled then
local _, cf = UserInputService:GetDeviceRotation()
print(cf)
else
warn("Cannot get device rotation because device does not have an enabled gyroscope!")
end
GetFocusedTextBox
Bu işlev, müşterinin şu anda odaklandığı TextBox döndürür.Bir TextBox kullanıcı tarafından manuel olarak seçilebilir veya TextBox:CaptureFocus() fonksiyonu kullanılarak seçim zorlaştırılabilir.Eğer hiçbir TextBox seçilmezse, bu işlev nil döndürecektir.
As UserInputService yalnızca istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın
Dönüşler
GetGamepadConnected
Bu işlev, verilen Enum.UserInputType ile bir oyun kolu klienteye bağlı olup olmadığını döndürür.
Bu, belirli bir oyun kolu, örneğin 'Gamepad1''in, istemci cihazına bağlı olup olmadığını kontrol etmek için kullanılabilir.
Tüm bağlı oyun konsollarının bir listesini almak için UserInputService:GetConnectedGamepads() kullanın.
As UserInputService yalnızca istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Parametreler
Soruşturulan oyun kolu Enum.UserInputType 'nin.
Dönüşler
Bir oyun kolu, Enum.UserInputType ile bağlantılı olup olmadığı.
GetGamepadState
Bu işlev, verilen Enum.UserInputType oyun kolu üzerindeki tüm mevcut girişler için bir dizi InputObjects döndürür, her girişin son giriş durumunu temsil eden.
Bağlı oyun konsollarının UserInputTypes 'sini bulmak için, UserInputService:GetConnectedGamepads() kullanın.
Bu işlev yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Parametreler
Soruşturulan oyun kolu ile eşleşen Enum.UserInputType .
Dönüşler
Verilen oyun konsoluna tüm mevcut girişlerin mevcut durumunu temsil eden bir dizi InputObjects .
GetImageForKeyCode
Bu yöntem talep edilen Enum.KeyCode alır ve şu anda bağlı olan oyun konsolu cihazı için ilişkili görüntüyü döndürür (Xbox, PlayStation ve Windows sınırlı).Bu, bağlı kontrolör bir Xbox One kontrolörü ise, kullanıcının Xbox varlıklarını gördüğü anlamına gelir.Benzer şekilde, bağlı cihaz bir PlayStation kontrolörü ise, kullanıcı PlayStation varlıklarını görür.Özel varlıklar kullanmak istiyorsanız, bakın GetStringForKeyCode() .
Parametreler
İlgili görüntüyü almak için kullanılacak Enum.KeyCode .
Dönüşler
Geri döndürülen görüntü varlığı ID'si.
Kod Örnekleri
Bu API, talep edilen görüntüyü verilen Enum.KeyCode.
local UserInputService = game:GetService("UserInputService")
local imageLabel = script.Parent
local key = Enum.KeyCode.ButtonA
local mappedIconImage = UserInputService:GetImageForKeyCode(key)
imageLabel.Image = mappedIconImage
GetKeysPressed
Bu işlev, şu anda basılan anahtarlarla ilişkili bir dizi InputObjects döndürür.
Bu dizi, hangi anahtarların şu anda basıldığını belirlemek için InputObject.KeyCode değerlerini kullanarak döngülenebilir.
Belirli bir anahtarın basılıp basılmadığını kontrol etmek için UserInputService:IsKeyDown() kullanın.
As UserInputService yalnızca istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Dönüşler
Şu anda basılan anahtarlarla ilişkili bir dizi InputObjects .
GetLastInputType
Bu işlev, kullanıcının en yeni girişiyle ilişkili 'Enum.UserInputType' döndürür.
Örneğin, kullanıcının önceki girişi boşluk tuşuna basıyorsa, Enum.UserInputType döndürülecek 'Klavye' olurdu.
The UserInputService.LastInputTypeChanged etkinliği, kullanıcı tarafından değiştirilen son Enum.UserInputType kullanıldığında izlenebilir.
As UserInputService yalnızca istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Dönüşler
Kullanıcının en yeni girişiyle ilişkili Enum.UserInputType .
Kod Örnekleri
This example gets the last Enum.UserInputType and outputs if it was keyboard input.
local UserInputService = game:GetService("UserInputService")
if UserInputService:GetLastInputType() == Enum.UserInputType.Keyboard then
print("Most recent input was keyboard!")
end
GetMouseButtonsPressed
Bu işlev, şu anda basılmakta olan fare düğmelerine karşılık gelen bir dizi InputObjects döndürür.
Bu işlev tarafından izlenen fare düğmeleri şunları içerir:
<td>Açıklama</td></tr></thead><tr><td>Fare Tuşu1</td><td>Sol fare düğmesi.</td></tr><tr><td>Fare Tuşu 2</td><td>Sağ fare düğmesi.</td></tr><tr><td>Fare Tuşu 3</td><td>Orta fare düğmesi.</td></tr>
Adı |
---|
Kullanıcı, işlev çağrıldığında herhangi bir fare düğmesine basmıyorsa, boş bir dizi döndürecektir.
As UserInputService yalnızca istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Dönüşler
Şu anda basılı tutulan fare düğmlerine karşılık gelen bir dizi InputObjects .
Kod Örnekleri
This example checks if the user pressed MouseButton1 (left), MouseButton2 (right), or both mouse buttons. This can be extended to behave differently depending on which mouse buttons are pressed, including MouseButton3 (middle).
local UserInputService = game:GetService("UserInputService")
UserInputService.InputBegan:Connect(function(input, gameProcessedEvent)
-- Return an array of the pressed mouse buttons
local buttonsPressed = UserInputService:GetMouseButtonsPressed()
local m1, m2 = false, false
for _, button in buttonsPressed do
if button.UserInputType == Enum.UserInputType.MouseButton1 then
print("MouseButton1 pressed!")
m1 = true
end
if button.UserInputType == Enum.UserInputType.MouseButton2 then
print("MouseButton2 pressed!")
m2 = true
end
if m1 and m2 then
print("Both mouse buttons pressed!")
end
end
end)
GetMouseDelta
Bu işlev, son gösterilen çerçevede oyuncunun Mouse konumunun değişimini, piksel olarak, bir Vector2 olarak döndürür.Bu işlev yalnızca fare UserInputService.MouseBehavior özelliği kullanılarak kilitlenmişse çalışır.Fare kilitli değilse, döndürülen Vector2 değerler sıfır olacaktır.
Mouse hassasiyeti, müşterinin ayarlarında ve UserInputService.MouseDeltaSensitivity belirlenen, sonucu etkileyecektir.
As UserInputService yalnızca istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Dönüşler
Farenin hareketinde değişiklik.
Kod Örnekleri
The following example measures any mouse movement in pixels from the last render step to the current render step. If the user has set their camera sensitivity to be higher or lower than 1 in the experience's menu, it will affect the returned value.
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
local function onRenderStep()
local delta = UserInputService:GetMouseDelta()
if delta ~= Vector2.new(0, 0) then
print("The mouse has moved", delta, "since the last step")
end
end
RunService:BindToRenderStep("MeasureMouseMovement", Enum.RenderPriority.Input.Value, onRenderStep)
GetMouseLocation
Bu işlev, oyuncunun Vector2 ının mevcut ekran konumunu temsil eden bir Mouse ı piksel olarak üst sol köşeye göre geri döndürür.Bu, en üst sol ve en alt sağ yerleşimleri almak için Enum.ScreenInsets ; almak için GuiService:GetGuiInset() 'yi arayın.
Fare işaretçisinin konumu ekranın dışında ise veya oyuncunun cihazında bir fare yoksa, döndürülen değer belirlenemeyecektir.
As UserInputService yalnızca istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Dönüşler
GetNavigationGamepads
Bu işlev, bağlı ve GUI navigasyonu için etkinleştirilmiş bir dizi oyun kolu UserInputTypes.Bu liste öncelik sırasında azalan bir düzende ve bu da demektir ki hangi oyun kolu navigasyon kontrolüne sahip olmalıdır belirlemek için tekrarlanabilir.
Bağlı bir oyun kolu, yalnızca navigasyon GUI'lerini kontrol eden oyun kolu olup olmadığına karar verir.Bu, navigasyon kontrollerini etkilemez.
Çünkü UserInputService sadece istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
- UserInputService:SetNavigationGamepad() , GUI navigasyonu için bir oyun kolu etkinleştirmek veya devre dışı bırakmak
- UserInputService:IsNavigationGamepad() , bir oyun kolu GUI navigasyonu için etkinleştirilmiş olup olmadığını doğrulamak
- UserInputService:GetConnectedGamepads() , GUI navigasyon kontrolünden bağımsız olarak bağlı tüm oyun konsollarını geri göndermek
Dönüşler
Öncelik sırasına göre GUI navigasyonu için kullanılabilecek bir dizi UserInputTypes öncelikli olarak düşen.
GetStringForKeyCode
GetStringForKeyCode bir kullanıcının belirli bir Enum.KeyCode girmesi için basması gereken bir anahtarı temsil eden bir dize döndürür, klavye düzenini göz önünde bulundurarak.Bazı değiştiricilerin tutulması gereken anahtar kodlar için, bu işlev anahtarı değiştiricinin yanında basılacak şekilde geri döndürür.Daha fazla açıklama için aşağıdaki örnekleri görün.
QWERTY klavye düzeni olmayan Roblox'u kullanırken, anahtar kodlar eşdeğer QWERTY konumlara yönlendirilir.Örneğin, AZERTY klavyesine basmak A sonucunda ortaya çıkar Enum.KeyCode.Q.Bu eşleştirme, deneyim UI öğeleriyle ilgili eşleşmeyen bilgilere yol açabilir.Örneğin, "Haritayı açmak için M bas" AZERTY klavyede yanlıştır; QWERTY'deki M ile aynı konumda olması gereken "Haritayı açmak için ? " gerekir.Bu işlev, QWERTY klavye düzenleri kullanılırken basılacak gerçek anahtarı sağlayarak bu sorunu çözer.
local UserInputService = game:GetService("UserInputService")local textLabel = script.Parentlocal mapKey = Enum.KeyCode.MtextLabel.Text = "Press " .. UserInputService:GetStringForKeyCode(mapKey) .. " to open the map"
QWERTY Klavyesi üzerindeki Örnekler
<th>Geri Dönüş Değeri</th></tr></thead><tbody><tr><td><code>Enum.KeyCode.Q</code></td><td><code>Q</code></td></tr><tr><td><code>Enum.KeyCode.W</code></td><td><code>W</code></td></tr><tr><td><code>Enum.KeyCode.Equals'in</code></td><td><code>=</code></td></tr><tr><td><code>Enum.KeyCode.At</code></td><td><code>2</code> çünkü <code>@</code> ile yazılmıştır <kbd>Shift</kbd><kbd>2</kbd></td></tr></tbody>
Anahtar Kodu |
---|
AZERTY Klavyesi Üzerindeki Örnekler
<th>Geri Dönüş Değeri</th></tr></thead><tbody><tr><td><code>Enum.KeyCode.Q</code></td><td><code>A</code></td></tr><tr><td><code>Enum.KeyCode.W</code></td><td><code>Z</code></td></tr><tr><td><code>Enum.KeyCode.Equals'in</code></td><td><code>=</code></td></tr><tr><td><code>Enum.KeyCode.At</code></td><td><code>É</code></td></tr></tbody>
Anahtar Kodu |
---|
Oyun Konsolu Kullanımı
GetStringForKeyCode() en yakın bağlı oyun kolu için Enum.KeyCode için yapılan dizilim dizesini geri verir.Bağlı kontrolör desteklenmiyorsa, işlev talep edilen anahtar kodu için varsayılan dize dönüşümünü döndürür.
Aşağıdaki örnek, özel varlıkları ButtonA için nasıl haritalayabileceğinizi gösterir:
local UserInputService = game:GetService("UserInputService")local imageLabel = script.Parentlocal key = Enum.KeyCode.ButtonAlocal mappings = {ButtonA = "rbxasset://BUTTON_A_ASSET", -- Replace with the desired ButtonA assetButtonCross = "rbxasset://BUTTON_CROSS_ASSET" -- Replace with the desired ButtonCross asset}local mappedKey = UserInputService:GetStringForKeyCode(key)local image = mappings[mappedKey]imageLabel.Image = image
Oyun Konsolu Haritaları
Yön tuşu kodları, cihaza dayalı herhangi bir farklılığa sahip değildir.Enum.KeyCode.ButtonSelect bazı durumlarda biraz farklı davranır.Kullanıcıların doğru düğmelere göz attığından emin olmak için her iki PlayStation eşleşimini de kullanın.
<th>Oyun Konsolu Geri Dönüş Değeri</th><th>Xbox Geri Dönüş Değeri</th></tr></thead><tbody><tr><td><code>Enum.KeyCode.ButtonA</code></td><td><code>ButonGeçişi</code></td><td><code>DüğmeA</code></td></tr><tr><td><code>Enum.KeyCode.ButtonB</code></td><td><code>ButonYuvarlak</code></td><td><code>DüğmeB</code></td></tr><tr><td><code>Enum.KeyCode.ButtonX</code></td><td><code>Düğme Kare</code></td><td><code>DüğmeX</code></td></tr><tr><td><code>Enum.KeyCode.ButtonY</code></td><td><code>ButonÜçgeni</code></td><td><code>DüğmeY</code></td></tr><tr><td><code>Enum.KeyCode.ButtonL1</code></td><td><code>DüğmeL1</code></td><td><code>DüğmeLB</code></td></tr><tr><td><code>Enum.KeyCode.ButtonL2</code></td><td><code>DüğmeL2</code></td><td><code>DüğmeLT</code></td></tr><tr><td><code>Enum.KeyCode.ButtonL3</code></td><td><code>DüğmeL3</code></td><td><code>DüğmeLS</code></td></tr><tr><td><code>Enum.KeyCode.ButtonR1</code></td><td><code>DüğmeR1</code></td><td><code>DüğmeRB</code></td></tr><tr><td><code>Enum.KeyCode.ButtonR2</code></td><td><code>DüğmeR2</code></td><td><code>DüğmeRT</code></td></tr><tr><td><code>Enum.KeyCode.ButtonR3</code></td><td><code>DüğmeR3</code></td><td><code>DüğmeRS</code></td></tr><tr><td><code>Enum.KeyCode.ButtonStart</code></td><td><code>ButonSeçenekleri</code></td><td><code>ButonBaşlat</code></td></tr><tr><td><code>Enum.KeyCode.ButtonSelect</code></td><td><code>Dokunmatik Düğme Paneli</code> ve <code>Düğme Paylaşımı</code></td><td><code>ButonSeç</code></td></tr></tbody>
Anahtar Kodu |
---|
AnahtarKodlar için Sistem Görüntüleri
Bir görüntü olarak daha iyi temsil edilebilecek bir Enum.KeyCode kullanırken, bir kullanıcı arayüzünde bir ImageLabel için, aşağıdaki miras kalan ikonları kullanabilirsiniz.Ancak, Xbox ve PlayStation kontrolörü simgelerini almak için daha modern ve çok platformlu bir yöntem olarak GetImageForKeyCode() kullanmanız önerilir.
<th>Resim</th><th>Varlık Kimliği</th></tr></thead><tbody><tr><td><code>Enum.KeyCode.ButtonX</code></td><td><img src="../../../assets/scripting/controls/xboxX.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/xboxX.png</code></td></tr><tr><td><code>Enum.KeyCode.ButtonY</code></td><td><img src="../../../assets/scripting/controls/xboxY.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/xboxY.png</code></td></tr><tr><td><code>Enum.KeyCode.ButtonA</code></td><td><img src="../../../assets/scripting/controls/xboxA.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/xboxA.png</code></td></tr><tr><td><code>Enum.KeyCode.ButtonB</code></td><td><img src="../../../assets/scripting/controls/xboxB.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/xboxB.png</code></td></tr><tr><td><code>Enum.KeyCode.DPadLeft</code></td><td><img src="../../../assets/scripting/controls/dpadLeft.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/dpadLeft.png</code></td></tr><tr><td><code>Enum.KeyCode.DPadRight</code></td><td><img src="../../../assets/scripting/controls/dpadRight.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/dpadRight.png</code></td></tr><tr><td><code>Enum.KeyCode.DPadUp</code></td><td><img src="../../../assets/scripting/controls/dpadUp.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/dpadUp.png</code></td></tr><tr><td><code>Enum.KeyCode.DPadDown</code></td><td><img src="../../../assets/scripting/controls/dpadDown.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/dpadDown.png</code></td></tr><tr><td><code>Enum.KeyCode.ButtonSelect</code></td><td><img src="../../../assets/scripting/controls/xboxView.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/xboxView.png</code></td></tr><tr><td><code>Enum.KeyCode.ButtonStart</code></td><td><img src="../../../assets/scripting/controls/xboxmenu.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/xboxmenu.png</code></td></tr><tr><td><code>Enum.KeyCode.ButtonL1</code></td><td><img src="../../../assets/scripting/controls/xboxLB.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/xboxLB.png</code></td></tr><tr><td><code>Enum.KeyCode.ButtonR1</code></td><td><img src="../../../assets/scripting/controls/xboxRB.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/xboxRB.png</code></td></tr><tr><td><code>Enum.KeyCode.ButtonL2</code></td><td><img src="../../../assets/scripting/controls/xboxLT.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/xboxLT.png</code></td></tr><tr><td><code>Enum.KeyCode.ButtonR2</code></td><td><img src="../../../assets/scripting/controls/xboxRT.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/xboxRT.png</code></td></tr><tr><td><code>Enum.KeyCode.ButtonL3</code></td><td><img src="../../../assets/scripting/controls/xboxLS.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/xboxLS.png</code></td></tr><tr><td><code>Enum.KeyCode.ButtonR3</code></td><td><img src="../../../assets/scripting/controls/xboxRS.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/xboxRS.png</code></td></tr><tr><td><code>Enum.KeyCode.Thumbstick1</code></td><td><img src="../../../assets/scripting/controls/xboxLSDirectional.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/xboxLSDirectional.png</code></td></tr><tr><td><code>Enum.KeyCode.Thumbstick2</code></td><td><img src="../../../assets/scripting/controls/xboxRSDirectional.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/xboxRSDirectional.png</code></td></tr><tr><td><code>Enum.KeyCode.Backspace</code></td><td><img src="../../../assets/scripting/controls/backspace.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/backspace.png</code></td></tr><tr><td><code>Enum.KeyCode.Return</code></td><td><img src="../../../assets/scripting/controls/return.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/return.png</code></td></tr><tr><td><code>Enum.KeyCode.LeftShift</code></td><td><img src="../../../assets/scripting/controls/shift.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/shift.png</code></td></tr><tr><td><code>Enum.KeyCode.RightShift</code></td><td><img src="../../../assets/scripting/controls/shift.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/shift.png</code></td></tr><tr><td><code>Enum.KeyCode.Tab</code></td><td><img src="../../../assets/scripting/controls/tab.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/tab.png</code></td></tr><tr><td><code>Enum.KeyCode.Quote</code></td><td><img src="../../../assets/scripting/controls/apostrophe.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/apostrophe.png</code></td></tr><tr><td><code>Enum.KeyCode.Comma</code></td><td><img src="../../../assets/scripting/controls/comma.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/comma.png</code></td></tr><tr><td><code>Enum.KeyCode.Backquote</code></td><td><img src="../../../assets/scripting/controls/graveaccent.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/graveaccent.png</code></td></tr><tr><td><code>Enum.KeyCode.Period</code></td><td><img src="../../../assets/scripting/controls/period.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/period.png</code></td></tr><tr><td><code>Enum.KeyCode.Space</code></td><td><img src="../../../assets/scripting/controls/spacebar.png" width="24"></img></td><td><code>rbxasset://textures/ui/Controls/spacebar.png</code></td></tr></tbody>
Anahtar Kodu |
---|
Parametreler
Dönüşler
GetSupportedGamepadKeyCodes
Bu işlev, verilen Enum.UserInputType ile ilişkili olan bir oyun kolu tarafından desteklenen bir dizi KeyCodes döndürür.
Bu işlev, hangi AnahtarKodların desteklendiğini ve bağlı bir oyun konsolu tarafından desteklenmediğini belirlemek için kullanılabilir.Belirli bir AnahtarKodun desteklendiğini belirlemek için, UserInputService:GamepadSupports() kullanın.
Mevcut olmayan veya bağlı olmayan bir oyun kolu çağrıldığında, bu işlev boş bir dizi döndürecektir.
As UserInputService yalnızca istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Parametreler
Oyun kolu Enum.UserInputType 'inin.
Dönüşler
Kod Örnekleri
Bu örnek, navigasyon oyun konsollarının bir listesini ve desteklenenlerin bir listesini alır Enum.KeyCodes.Sonra, desteklenen AnahtarKod listesinden döngü geçer ve ButtonX ve X düğmeleri bir oyun kumandası tarafından destekleniyorsa, fonksiyonlara bağlanır ContextActionService.
local UserInputService = game:GetService("UserInputService")
local ContextActionService = game:GetService("ContextActionService")
local function actionHandler(actionName, inputState, inputObject)
if inputState == Enum.UserInputState.Begin then
print("Action Handler: " .. actionName)
print(inputObject)
end
-- Bu işlev hiçbir şey dönmediğinden, bu işlemci
-- giriş "sink" edilir ve başka bir giriş işlem yöneticisi ardından çağrılmaz
-- bu.
end
local navGamepads = UserInputService:GetNavigationGamepads()
for _, gamepad in pairs(navGamepads) do
local supportedKeyCodes = UserInputService:GetSupportedGamepadKeyCodes(gamepad)
for _, keycode in pairs(supportedKeyCodes) do
if keycode == Enum.KeyCode.ButtonX then
ContextActionService:BindAction("SampleAction", actionHandler, false, Enum.KeyCode.ButtonX)
end
if keycode == Enum.KeyCode.X then
ContextActionService:BindAction("SampleAction", actionHandler, false, Enum.KeyCode.X)
end
end
end
IsGamepadButtonDown
Bu işlev, belirli bir oyun konsolunda belirli bir düğmeye basılıp basılmadığını kontrol eder.Eğer belirtilen basılmışsa döndürürse, aksi takdirde false döndürür.
Geçerli KullanıcıGirişTürleri
Belirtilen oyun kolu, aşağıdaki KullanıcıGirişTürü sayısal değerlerden biri olmalıdır:
<tr><td>Enum.UserInputType.Gamepad1-8'in</td></tr>
Adı |
---|
Geçerli Anahtar Kodları
Belirtilen düğme, aşağıdaki AnahtarKodları sayısal değerlerinden biri olmalıdır:
<tr><td>Enum.KeyCode.ButtonX</td></tr><tr><td>Enum.KeyCode.ButtonY</td></tr><tr><td>Enum.KeyCode.ButtonA</td></tr><tr><td>Enum.KeyCode.ButtonB</td></tr><tr><td>Enum.KeyCode.ButtonR1</td></tr><tr><td>Enum.KeyCode.ButtonL1</td></tr><tr><td>Enum.KeyCode.ButtonR2</td></tr><tr><td>Enum.KeyCode.ButtonL2</td></tr><tr><td>Enum.KeyCode.ButtonR3</td></tr><tr><td>Enum.KeyCode.ButtonL3</td></tr><tr><td>Enum.KeyCode.ButtonStart</td></tr><tr><td>Enum.KeyCode.ButtonSelect</td></tr><tr><td>Enum.KeyCode.DPadLeft</td></tr><tr><td>Enum.KeyCode.DPadRight'a</td></tr><tr><td>Enum.KeyCode.DPadUp</td></tr><tr><td>Enum.KeyCode.DPadDown</td></tr>
Adı |
---|
Bu, A gibi belirli bir düğmenin basılı tutulup tutulmadığını kontrol etmek için kullanılabilir. Örneğin:
local UserInputService = game:GetService("UserInputService")local button = Enum.KeyCode.ButtonAlocal gamepad = Enum.UserInputType.Gamepad1local isButtonHeld = UserInputService:IsGamepadButtonDown(gamepad, button)
Çünkü UserInputService sadece istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
- UserInputService:IsKeyDown() - Farklı bir kullanımla benzer bir yöntem: Belirli bir key ın keyboard üzerinde basılıp basılmadığını kontrol etmek için.
Parametreler
Verilen oyun kolu Enum.UserInputType 'nin.
Belirtilen düğmenin Enum.KeyCode 'si.
Dönüşler
Verilen oyun konsolundaki belirtilen oyun düğmesine basılıp basılmadığı.
IsKeyDown
Bu işlev, kullanıcının verilen Enum.KeyCode ile ilişkili anahtarı basılı tutup tutmadığını döndürür.Belirtilen anahtar basıldığında true veya basılmadığında false döndürür.
Örneğin, boşluk çubuğu gibi belirli bir anahtarın basılıp basılmadığını kontrol etmek için kullanılabilir. Örneğin:
local UserInputService = game:GetService("UserInputService")local spaceHeld = UserInputService:IsKeyDown(Enum.KeyCode.Space)
Kullanıcı tarafından basılan tüm anahtarların bir listesini almak için, UserInputService:GetKeysPressed() işlevini kullanın.
Çünkü UserInputService sadece istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
- Enum.UserInputType.IsGamepadButtonDown - Farklı bir kullanımla benzer bir olay: Belirli bir button ın gamepad üzerinde basılıp basılmadığını kontrol etmek için.
Parametreler
Anahtarın Enum.KeyCode 'si.
Dönüşler
Belirtilen anahtar basılı tutuluyor mu.
IsMouseButtonPressed
Bu işlev bir fare düğmesi alır Enum.UserInputType ve şu anda basılıp basılmadığını gösteren bir bool döndürür.
Kontrol edilen fare düğmesi, işlevin bir argüman olarak geçirdiği Enum.UserInputType değerine bağlıdır. Örneğin:
local UserInputService = game:GetService("UserInputService")local pressed = UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1)
Çünkü UserInputService sadece istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir."
Parametreler
Fare düğmesinin Enum.UserInputType 'si.
Dönüşler
Verilen fare düğmesi şu anda basılı tutuluyor mu.
IsNavigationGamepad
Bu işlev, belirtilen Enum.UserInputType oyun kolu Navigasyon ve Seçim GuiObjects kontrol etmesine izin verirse true döndürür.
Bir navigasyon oyun kolu ayarlamak istiyorsanız, UserInputService:SetNavigationGamepad() kullanabilirsiniz. Ayrıca tüm navigasyon oyun kollarının bir listesini almak için UserInputService:GetNavigationGamepads() kullanabilirsiniz.
Örneğin, aşağıdaki kod oyun kolu1'in bir navigasyon oyun kolu olup olmadığını kontrol eder:
local UserInputService = game:GetService("UserInputService")if UserInputService:IsNavigationGamepad(UserInputType.Gamepad1) thenprint("Gamepad is a navigation gamepad!")elseprint("Gamepad is not a navigation gamepad!")end
Navigasyon bağımsız olarak, tüm bağlı oyun konsollarının bir listesi `UserInput/GetConnectedGamepads kullanılarak alınabilir.
Çünkü UserInputService sadece istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Parametreler
Belirtilen oyun kolu Enum.UserInputType 'inin.
Dönüşler
Belirtilen oyun kolu bir navigasyon oyun kolu ise.
RecenterUserHeadCFrame
Bu işlev, VR kulaklığın CFrame kafasını kullanıcı tarafından giyilen kulaklığın mevcut yönüne yeniden yerleştirir.Bu, kulaklığın mevcut yönünün CFrame.new() olarak ayarlandığını gösterir.
Bu işlevi kullanarak kulaklık CFrame'ı oyun alanının merkezine taşıyın, eğer garip bir ofsette görünüyorsa.
Bu, VRService işlevine benzer şekilde davranır, VRService:RecenterUserHeadCFrame() .
Çünkü UserInputService sadece istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Dönüşler
SetNavigationGamepad
SetNavigationGamepad işlevi, belirtilen Enum.UserInputType oyun kolu GUI navigatörünü hareket ettirebilecek mi belirler.GUI navigatörünü hareket ettirmesine izin verilen bir oyun kolu, navigasyon oyun kolu olarak kabul edilir.
etkinleştirildi argümanı olarak geçerse, Gamepad GUI navigatörünü hareket ettirebilir.Argüman false ise, Gamepad GUI navigatörünü hareket ettiremez.
Belirlenmiş bir Oyun Konsolu'nun bir navigasyon konsolu olarak ayarlanıp ayarlanmadığını kontrol etmek istiyorsanız, UserInputService:IsNavigationGamepad() işlevini kullanabilirsiniz.Ayrıca, tüm navigasyon gamepadlerinin bir listesini almak için UserInputService:GetNavigationGamepads() kullanabilirsiniz.
Çünkü UserInputService sadece istemci tarafında olduğundan, bu işlev yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Parametreler
Belirtilen oyun kolu Enum.UserInputType 'inin.
Belirtilen oyun kolu GUI navigatörünü hareket ettirebilir mi.
Dönüşler
Kod Örnekleri
Bu örnek, Gamepad1 gezinti oyun kolu olarak ayarlar ve Enum.UserInputType.Gamepad1 ve true gibi argümanları geçerek.
local UserInputService = game:GetService("UserInputService")
UserInputService:SetNavigationGamepad(Enum.UserInputType.Gamepad1, true)
Etkinlikler
DeviceAccelerationChanged
AygıtHızlandırmaDeğiştirildi etkinliği, bir kullanıcı bir hızlandırıcıya sahip bir cihazı hareket ettirdiğinde ateşlenir.
Bir hızlandırıcı, hızlanmayı ölçen çoğu mobil cihazda bulunan bir bileşendir (hız değişimi).
Bir kullanıcının cihazının bir hızlandırıcıya sahip olup olmadığını belirlemek için, bakın UserInputService.AccelerometerEnabled .
Bu etkinlik, hızlandırıcıya sahip bir cihazın hareketini izlemek için kullanılabilir.Örnek kullanım, mobil bir cihaz hızlandığında oyuncu karakterini hareket ettirmeyi içerir.
Ayrıca, bu etkinin UserInputService:GetDeviceAcceleration() ile birlikte kullanılması, bir cihazın hızlandırıcıya sahip olması durumunda kullanıcının mevcut hareketini belirlemek için kullanılabilir.
Bu etkinlik yalnızca yerel olarak ateşlenir - bu da sadece cihazı hareket eden oyuncunun etkinliği kullanabileceği ve sadece bir LocalScript içinde çalışacağı anlamına gelir.
Parametreler
Bir InputObject , bir UserInputType ile, ve her yerel cihaz ekseninde yerçekiminin gücünü gösteren 'Accelerometer' , ve Position , her bir yerçekiminin gücünü gösteren.
Kod Örnekleri
This example uses the accelerometer to move the player character when a mobile device is accelerated. The character will move along the axis that the device was moved.
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local SENSITIVITY = 0.2
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local ready = true
local function changeAcceleration(acceleration)
if ready then
ready = false
local accel = acceleration.Position
if accel.Y >= SENSITIVITY then
humanoid.Jump = true
end
if accel.Z <= -SENSITIVITY then
humanoid:Move(Vector3.new(-1, 0, 0))
end
if accel.Z >= SENSITIVITY then
humanoid:Move(Vector3.new(1, 0, 0))
end
if accel.X <= -SENSITIVITY then
humanoid:Move(Vector3.new(0, 0, 1))
end
if accel.X >= SENSITIVITY then
humanoid:Move(Vector3.new(0, 0, -1))
end
task.wait(1)
ready = true
end
end
if UserInputService.AccelerometerEnabled then
UserInputService.DeviceAccelerationChanged:Connect(changeAcceleration)
end
DeviceGravityChanged
The UserInputService.DeviceGravityChanged etkinliği, bir hızlandırıcıya sahip bir cihazda cihazın yerçekimi Vector3 değiştiğinde ateşlenir.
Bir cihazın yerçekimi vektörü, cihazın X, Y ve Z eksenlerindeki yerçekim gücünü temsil eder.Yerçekimi asla değişmezken, her bir eksene uyguladığı kuvvet, cihaz döndüğünde ve yön değiştirdiğinde değişir.Her eksene uygulanan güç değeri -1'den 1'e kadar değişen bir birim vektörüdür.
Bir hızlandırıcı, hızlanmayı ölçen çoğu mobil cihazda bulunan bir bileşendir (hız değişimi).
Bu etkinlik, bir kullanıcının cihazındaki yerçekimi gücünün gerçek dünya yönünü belirlemek için kullanılabilir.Bu daha sonra oyun içinde bir kullanıcının cihazındaki yerçekimi gücünü simüle etmek için kullanılabilir, örneğin oyun içi nesnelerde (aşağıdaki örnek bakın).
Bir kullanıcının cihazının hızlandırıcıya sahip olup olmadığını kontrol etmek için, bakın UserInputService.AccelerometerEnabled .Cihazda bir hızlandırıcı etkinleştirildiyse, kullanıcının cihazındaki mevcut yerçekimi gücünü almak için UserInputService:GetDeviceGravity() işlevini kullanabilirsiniz.
Parametreler
Her yerel cihaz ekseninde yerçekiminin gücünü gösteren bir InputObject , InputObject.Position özelliği ileBu pozisyon, cihazla ilgili yerçekimi yönünü belirlemek için bir yön olarak kullanılabilir.
Kod Örnekleri
This code adds a force on a part so that it falls in the direction of actual gravity relative to the user's device. In order for this example to work as expected, it must be placed in a LocalScript and the user's device must have an accelerometer.
local Workspace = game:GetService("Workspace")
local UserInputService = game:GetService("UserInputService")
local ball = script.Parent:WaitForChild("Ball")
local mass = ball:GetMass()
local gravityForce = ball:WaitForChild("GravityForce")
local function moveBall(gravity)
gravityForce.Force = gravity.Position * Workspace.Gravity * mass
end
if UserInputService.AccelerometerEnabled then
UserInputService.DeviceGravityChanged:Connect(moveBall)
end
DeviceRotationChanged
CihazDöndürmeDeğiştirildi etkinliği, bir kullanıcı jiroskopu olan bir cihazı döndürdüğünde ateşlenir.
Bir jiroskop, yön ve dönme hızını algılayan çoğu mobil cihazda bulunan bir bileşendir.
Etkinlik, cihazın yönünü ve kullanıcının cihazı döndürdüğünde değişiklikleri izlerken yararlıdır.Mevcut cihaz dönüşünü belirlemek için, UserInputService:GetDeviceRotation() fonksiyonunu kullanabilirsiniz.
Bir kullanıcının cihazının bir jiroskopu var olup olmadığını ve bu olayın ateşleneceğini kontrol etmek için, bakın UserInputService.GyroscopeEnabled .
Bu etkinlik yalnızca Roblox istemci penceresi odakta olduğunda ateşlenir. Örneğin, pencere azaltıldığında girişler yakalanmayacaktır.
Parametreler
Bir InputObject cihazın dönüşü hakkında bilgi sağlayan.InputObject.Position yeni dönüşü bir Vector3 pozisyonel değeri ve InputObject.Delta dönüşteki değişimi bir Vector3 pozisyonel değerde temsil eder.
Kod Örnekleri
This code adds a force on a part so that it falls in the direction of actual gravity relative to the user's device. In order for this example to work as expected, it must be placed in a LocalScript and the user's device must have an accelerometer.
local Workspace = game:GetService("Workspace")
local UserInputService = game:GetService("UserInputService")
local ball = script.Parent:WaitForChild("Ball")
local mass = ball:GetMass()
local gravityForce = ball:WaitForChild("GravityForce")
local function moveBall(gravity)
gravityForce.Force = gravity.Position * Workspace.Gravity * mass
end
if UserInputService.AccelerometerEnabled then
UserInputService.DeviceGravityChanged:Connect(moveBall)
end
GamepadConnected
Oyun Konsolu Bağlı etkinliği, bir oyun konsolu istemciye bağlandığında ateşlenir.
Bir Roblox oyunu çok sayıda kontrolörü desteklediğinden, bu etkinlik aktif olan kontrolörler/oyun pedlerini izlemek için UserInputService.GamepadDisconnected etkinliği ile eşleştirildiğinde yararlıdır.Ayrıca kullanmak için doğru oyun kolu bulmak için UserInputService:GetConnectedGamepads() kullanabilirsiniz.
Aşağıdaki örnek, bir oyun kolu kliente bağlandığında izlemenin bir kullanım örneğini gösterir.
local UserInputService = game:GetService("UserInputService")
local function GamepadConnected(gamepad)
print("Player has plugged controller: " .. tostring(gamepad))
end)
UserInputService.GamepadConnected:Connect(GamepadConnected)
Hangi cihazların bağlı olduğunu görmek istiyorsanız, UserInputService:GetConnectedGamepads() fonksiyonunu kullanabilirsiniz.
Bu olay yerel olarak ateş olduğundan, sadece bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Parametreler
Bağlı oyun konsolunun Enum.UserInputType 'si.
GamepadDisconnected
Oyun kolu bağlantısı kesildi etkinliği, bir oyun kolu bağlantısı kesildiğinde ateş edilir.
Bir Roblox oyunu çok sayıda kontrolörü desteklediğinden, bu etkinlik aktif olan kontrolörler/oyun pedlerini izlemek için UserInputService.GamepadConnected etkinliği ile eşleştirildiğinde yararlıdır.Ayrıca kullanmak için doğru oyun kolu bulmak için UserInputService:GetConnectedGamepads() kullanabilirsiniz.
Aşağıdaki örnek, bir oyun kolu kullanımdan koparıldığında bir izlemenin kullanım örneğini gösterir.
local UserInputService = game:GetService("UserInputService")
local function GamepadDisconnected(gamepad)
print("Player has unplugged controller: " .. tostring(gamepad))
end)
UserInputService.GamepadDisconnected:Connect(GamepadDisconnected)
Bu olay yerel olarak ateş olduğundan, sadece bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Parametreler
Bağlantı kesilmiş oyun kolu Enum.UserInputType 'inin.
InputBegan
InputBegan etkinliği, bir kullanıcının bir İnsan-Bilgisayar Arayüzü cihazı aracılığıyla etkileşime başladığında ateşlenir (fare düğmesü aşağı, dokunma başlar, klavye düğmesi aşağı, vb.).
Kullanıcı etkileşiminin başlangıcını izlemek için kullanılabilir, örneğin bir kullanıcı ilk önce bir GUI öğesi, oyun konsolu vb. ile etkileşime girer.Fare tekerleği hareketlerini yakalamaz.
Bu etkinlik, kullanıcı girişinin, değişikliklerin ve bitişinin ne zaman başladığını izlemek için UserInputService.InputChanged ve UserInputService.InputEnded ile birlikte kullanılabilir.
Bu etkinlik yalnızca Roblox istemci penceresi odakta olduğunda ateşlenir. Örneğin, pencere azaltıldığında girişler yakalanmayacaktır.
Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Parametreler
Kullanıcının girişiyle ilgili bilgileri içeren bir InputObject örneği.
Oyun motorunun bu girişi içeriden gözlemlediğini ve buna göre hareket ettiğini gösterir.Genellikle bu, UI işlemiyle ilgilidir, bu nedenle bir düğme bu girişten dokunuldu veya tıklandıysa, gameProcessedEvent olurdu true.Bu ayrıca ContextActionService üzerinden bağlanan giriş olayları için de geçerlidir.
InputChanged
Giriş Değiştirildi etkinliği, bir kullanıcının bir İnsan-Bilgisayar Arayüzü cihazı aracılığıyla nasıl etkileşime girdiğini değiştirdiğinde ateşlenir (fare tuşu aşağı, dokunma başlangıcı, klavye tuşu aşağı vb.).
Roblox tarafından otomatik olarak işlenen olayları görmezden gelmek için, ScrollingFrame kaydırma gibi, gameProcessedEvent argumentının yanlış olduğundan emin olun.Bu etkinlik, UserInputService.InputBegan ve UserInputService.InputEnded ile birlikte kullanılarak kullanıcı girişinin, değişikliklerin ve bitişinin ne zaman başladığını izleyebilir.
Bu etkinlik yalnızca Roblox istemci penceresi odakta olduğunda ateşlenir. Örneğin, pencere azaltıldığında girişler yakalanmayacaktır.
Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Parametreler
Kullanıcının girişiyle ilgili bilgileri içeren bir InputObject örneği.
Oyun motorunun bu girişi içeriden gözlemlediğini ve buna göre hareket ettiğini gösterir.Genellikle bu, UI işlemiyle ilgilidir, bu nedenle bir düğme bu girişten dokunuldu veya tıklandıysa, gameProcessedEvent olurdu true.Bu ayrıca ContextActionService üzerinden bağlanan giriş olayları için de geçerlidir.
InputEnded
GirişBitti etkinliği, bir kullanıcının İnsan-Bilgisayar Arayüzü cihazı üzerinden etkileşimini durdurduğunda ateşlenir (fare düğmesi aşağı, dokunma başlar, klavye düğmesi aşağı, vb.).Bir kullanıcı bir klavye tuşu, fare düğmesi, dokunma ekranı girişi vb. serbest bıraktığını izlerken bu yararlıdır.
Bu etkinlik, kullanıcı girişinin, değişikliklerin ve bitişinin ne zaman başladığını izlemek için UserInputService.InputBegan ve UserInputService.InputChanged ile birlikte kullanılabilir.
Bu etkinlik yalnızca Roblox istemci penceresi odakta olduğunda ateşlenir. Örneğin, pencere azaltıldığında girişler yakalanmayacaktır.
Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Parametreler
Kullanıcı girişiyle ilgili bilgileri içeren bir InputObject örneği,
Oyun motorunun bu girişi içeriden gözlemlediğini ve buna göre hareket ettiğini gösterir.Genellikle bu, UI işlemiyle ilgilidir, bu nedenle bir düğme bu girişten dokunuldu veya tıklandıysa, gameProcessedEvent olurdu true.Bu ayrıca ContextActionService üzerinden bağlanan giriş olayları için de geçerlidir.
JumpRequest
JumpRequest etkinliği, istemci tarafından bir atlama isteği olduğunda çalışır, örneğin istemci mobil cihazda boşluk tuşuna veya atlama düğmesine bastığında. UserInputService
Bu olay, kullanıcının Player.Character atlamasını yapmaya çalıştığında herhangi bir zamanda ateşlenir.Varsayılan davranış, oyuncunun Humanoid.Jump özelliğini doğru olarak ayarlayarak bir atlama isteğine yanıt verir, bu da oyuncunun karakterinin atlamasını sağlar.
Etkinlik, bir oyuncunun atlamak istediği her seferi izlemek için kullanılabilir.Bir oyuncunun atlamasını yapmak için kullanmak yerine, varsayılan atlama davranışını değiştirmek için kullanılmalıdır - örneğin atlamayı devre dışı bırakmak.
Örneğin, aşağıdaki kod, oyuncu bir atlama isteği gönderdiğinde her seferinde "Zıplama" yazdırır.
local UserInputService = game:GetService("UserInputService")
function onJumpRequest()
print("Jump!")
end
UserInputService.JumpRequest:Connect(onJumpRequest)
Bu olay, tek bir atlama isteği için birden fazla kez ateş olduğundan, bir gecikme kullanılması önerilir.
Anahtarları veya düğmeleri diğer eylemlere bağlamak istiyorsanız, UserInputService:GetKeysPressed() ve UserInputService.InputBegan veya ContextActionService gibi olayları kullanmayı düşünün.
Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Kod Örnekleri
Bu kod örneği, durumunu yanlış olarak ayarlayarak atlamayı devre dışı bırakır.Kullanıcı atlamaya çalıştığında bu durumu yanlış olarak ayarlamak, atlamayı iptal eder.
Bu örnekin beklenen şekilde çalışması için, bir LocalScript içine yerleştirilmelidir.
local UserInputService = game:GetService("UserInputService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
-- Kullanıcı atlamaya çalıştığında ateş eder
local function jump()
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
UserInputService.JumpRequest:Connect(jump)
LastInputTypeChanged
etkinliği, müşterinin bir İnsan-Bilgisayar Arayüzü cihazı aracılığıyla nasıl etkileşime girdiğini değiştirdiğinde her zaman ateşlenir.(i.e.MouseMovement'ten MouseWheel'e veya Thumbstick1'den Thumbstick2'ye).
Değişip değişmediğine bakılmaksızın, son giriş türünün değerini almak için UserInputService:GetLastInputType() işlevini kullanabilirsiniz.
Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Parametreler
Son giriş türünü gösteren bir Enum.UserInputType .
Kod Örnekleri
This example hides the mouse icon while the player beings using their keyboard, such as to chat or enter text into a TextBox. The mouse icon reappears when the user resumes mouse input.
This uses the LastInputType() event to determine when the user begins keyboard input and mouse input - based on the value of the lastInputType argument.
In order for this example to work as expected, it should be placed in a LocalScript.
local UserInputService = game:GetService("UserInputService")
local mouseInput = {
Enum.UserInputType.MouseButton1,
Enum.UserInputType.MouseButton2,
Enum.UserInputType.MouseButton3,
Enum.UserInputType.MouseMovement,
Enum.UserInputType.MouseWheel,
}
local keyboard = Enum.UserInputType.Keyboard
local function toggleMouse(lastInputType)
if lastInputType == keyboard then
UserInputService.MouseIconEnabled = false
return
end
for _, mouse in pairs(mouseInput) do
if lastInputType == mouse then
UserInputService.MouseIconEnabled = true
return
end
end
end
UserInputService.LastInputTypeChanged:Connect(toggleMouse)
PointerAction
İşaret Etme Eylemi , kullanıcı belirli bir işaret etme eylemi gerçekleştirdiğinde ateş eder. Özellikle, fare tekerleğini kaydırma.
Parametreler
TextBoxFocusReleased
etkinliği, bir müşterinin bir üzerinde odaklanmasını kaybettiğinde ateşlenir, genellikle bir müşterinin dönüş tuşuna basarak veya ekranda başka bir yere tıklayarak metin girişini durdurduğunda.
Örneğin, aşağıdaki kod, olay ateşlendiğinde odak kaybına uğrayan TextBox adını yazdırır.
local UserInputService = game:GetService("UserInputService")
function TextBoxFocusReleased(textbox)
print(textbox.Name)
end
UserInputService.TextBoxFocusReleased:Connect(TextBoxFocusReleased)
Bir TextBox kazanır ve kaybeder odaklandığını izlemek için UserInputService.TextBoxFocused yanında kullanılabilir.
Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın
Parametreler
TextBoxFocused
Bu olay, bir kazanç odaklanırken bir TextBox üzerinde ateşlenir, genellikle bir müşteri metin girişine başlamak için bir metin kutusuna tıklar/dokunur.Ayrıca, bir metin kutusu odaklanması TextBox:CaptureFocus() kullanılarak odaklanırsa da ateş edilir.
Örneğin, aşağıdaki kod, olay ateşlendiğinde odaklanan TextBox adını yazdırır.
local UserInputService = game:GetService("UserInputService")
function TextBoxFocused(textbox)
print(textbox.Name)
end)
UserInputService.TextBoxFocused:Connect(TextBoxFocused)
Bir metin kutusunun odak kazandığı ve kaybettiği zamanı izlemek için UserInputService.FocusReleased ile birlikte kullanılabilir.
Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın
Parametreler
TouchDrag
Parametreler
TouchEnded
Dokunma Bitti etkinliği, bir kullanıcı dokunma girişini bir Dokunma Etkinleştirilmiş cihazın ekranından serbest bıraktığında ateşlenir ve cihazla dokunma girişini bitirir.
Bu etkinlik, bir kullanıcının cihazının ekranına dokunmayı bıraktığını belirlemek için kullanılabilir.Bir kullanıcının ekrana dokunmaya başladığı ve durduğu anı belirlemek için UserInputService.TouchStarted ile eşleştirilebilir.
Örneğin, aşağıdaki kod, kullanıcının ekrana dokunmayı bıraktığı ekran konumunu basar.
local UserInputService = game:GetService("UserInputService")
function TouchEnded(touch, gameProcessedEvent)
print("Touch ended at " .. tostring(touch.Position))
end
UserInputService.TouchEnded:Connect(TouchEnded)
Dokunma giriş nesnesi, dokunma süresi boyunca aynı giriş nesnesidir.Bu nedenle dokunma nesneleri olduklarında InputObjects karşılaştırması aynı parmak olup olmadığını belirlemek için geçerlidir.
Bir kullanıcının cihazının TouchEnabled olup olmadığını ve bu dokunma olaylarının ateşleneceğini kontrol etmek için, UserInputService.TouchEnabled görün.
Bu etkinlik yalnızca Roblox istemci penceresi odakta olduğunda ateşlenir. Örneğin, pencere azaltıldığında girişler yakalanmayacaktır.
Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Parametreler
Kullanıcının girişiyle ilgili bilgileri içeren bir InputObject örneği.
Oyun motorunun bu girişi içeriden gözlemlediğini ve buna göre hareket ettiğini gösterir.Genellikle bu, UI işlemiyle ilgilidir, bu nedenle bir düğme bu girişten dokunuldu veya tıklandıysa, gameProcessedEvent olurdu true.Bu ayrıca ContextActionService üzerinden bağlanan giriş olayları için de geçerlidir.
TouchLongPress
Bir kullanıcı, bir dokunma etkinleştirilmiş cihazın aynı ekran konumunda kısa bir süre için en az bir parmağı tutarken ateş edilir.
Bu etkinlik, bir kullanıcının bir oyundaki GuiObject veya bir eleman üzerinde parmağını ne zaman tuttuğunu belirlemek için kullanılabilir.
Aşağıdaki örnek, kullanıcının aynı ekran pozisyonunda kısa bir süre için en az bir parmağı tutarken uzun basmanın state'sini yazdırır.Olası durumlar şunları içerir: Başla , Değiştir , Sonlandır , İptal et ve Hiçbiri.
local UserInputService = game:GetService("UserInputService")
function TouchLongPress(TouchPositions, state, gameProcessedEvent)
print("Long press event fired. State of press: " .. tostring(state))
end
UserInputService.TouchLongPress:Connect(TouchLongPress)
Bir kullanıcının cihazının TouchEnabled olup olmadığını ve bu dokunma olaylarının ateşleneceğini kontrol etmek için, UserInputService.TouchEnabled görün.
Bir kullanıcının ekrana dokunmaya başladığı ve durduğu anı belirlemek için UserInputService.TouchStarted ve UserInputService.TouchEnded ile eşleştirilebilir.
Bu etkinlik yalnızca Roblox istemci penceresi odakta olduğunda ateşlenir. Örneğin, pencere azaltıldığında girişler yakalanmayacaktır.
Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Parametreler
Harekete dahil olan parmakların konumunu gösteren bir dizi Vector2 nesne, işaret eden bir dizi.
Hareketin Enum.UserInputState 'i.
Oyun motorunun bu girişi içeriden gözlemlediğini ve buna göre hareket ettiğini gösterir.Genellikle bu, UI işlemiyle ilgilidir, bu nedenle bir düğme bu girişten dokunuldu veya tıklandıysa, gameProcessedEvent olurdu true.Bu ayrıca ContextActionService üzerinden bağlanan giriş olayları için de geçerlidir.
TouchMoved
Bir kullanıcı parmağını bir TouchEnabled tablet veya akıllı telefon gibi bir cihaz üzerinde hareket ettirdiğinde ateş eder.
Bu etkinlik, bir kullanıcının ekranda parmağını hareket ettirdiğini ve parmağını nereye hareket ettirdiğini izlemek için yararlıdır.
Aşağıdaki kod, dokunmanın önceki konumundan yeni bir pozisyona TouchEnabled bir cihazda hareket ettiğini gösterir.Geçen InputObject.Position çözümleme parametresindeki touch nın bir Vector3 olduğunu unutmayın, ancak sadece X ve Y koordinatlarını içerir; Z daima 0'dur.
local UserInputService = game:GetService("UserInputService")
function onTouchMoved(touch, gameProcessedEvent)
local oldPosition = touch.Position - touch.Delta
print("Touch moved from " .. tostring(oldPosition) .. " to " .. tostring(touch.Position))
end
UserInputService.TouchMoved:Connect(onTouchMoved)
Bir kullanıcı ekrana dokunmaya başladığında, dokunurken parmaklarının hareket ettiği süre ve ekrana dokunmayı bıraktığı süre belirlemek için bu olayı UserInputService.TouchStarted ve UserInputService.TouchEnded ile eşleştirin.
Bir kullanıcının cihazının dokunmayı desteklediğini ve dokunma olaylarının ateşleneceğini kontrol etmek için, UserInputService.TouchEnabled görün.
Bu etkinlik yalnızca Roblox istemci penceresi odakta olduğunda ateşlenir. Örneğin, pencere azaltıldığında girişler yakalanmayacaktır.
Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Parametreler
Kullanıcının girişiyle ilgili bilgileri içeren bir InputObject örneği.
Oyun motorunun bu girişi içeriden gözlemlediğini ve buna göre hareket ettiğini gösterir.Genellikle bu, UI işlemiyle ilgilidir, bu nedenle bir düğme bu girişten dokunuldu veya tıklandıysa, gameProcessedEvent olurdu true.Bu ayrıca ContextActionService üzerinden bağlanan giriş olayları için de geçerlidir.
TouchPan
TouchPan etkinliği, bir kullanıcı en az bir parmağı bir TouchEnabled cihazına sürüklediğinde ateşlenir.
Bu etkinlik, bir kullanıcının bir dokunma etkinleştirilmiş cihazın ekranında parmağını döndürdüğü zamanı belirlemek için kullanılabilir - örneğin, özel bir kamera senaryosunda Camera döndürmek.
Aşağıdaki kısım "Dokunma hızı sürükleme" basılır ve kullanıcı parmağını ekrana sürdüğünde kullanıcının dokunma hızı takip edilir.
local UserInputService = game:GetService("UserInputService")
UserInputService.TouchPan:Connect(function(touchPositions, totalTranslation, velocity, state, gameProcessedEvent)
print("Speed of touch drag: " .. tostring(velocity))
end)
Başka yararlı UserInputService işlevine burada bir göz atın UserInputService.TouchRotate .
Bu etkinlik yalnızca Roblox istemci penceresi odakta olduğunda ateşlenir. Örneğin, pencere azaltıldığında girişler yakalanmayacaktır.
Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Parametreler
Dokunma konumlarını (örneğin parmaklar) işaret eden bir dizi Vector2 nesne, harekete dahil olan dokunma nesneleri.
Tencere hareketinin başından sonuna kadar boyutu (piksel olarak).
Tava hareketinin hızı (piksel başına saniye) saniye başına.
Hareketin Enum.UserInputState 'i.
Oyun motorunun bu girişi içeriden gözlemlediğini ve buna göre hareket ettiğini gösterir.Genellikle bu, UI işlemiyle ilgilidir, bu nedenle bir düğme bu girişten dokunuldu veya tıklandıysa, gameProcessedEvent olurdu true.Bu ayrıca ContextActionService üzerinden bağlanan giriş olayları için de geçerlidir.
TouchPinch
Bir kullanıcı bir TouchEnabled cihazın ekranına iki parmak yerleştirdiğinde ve hareket ettirdiğinde ateş edilir.
Örneğin, aşağıdaki kısım, dokunma çekiminin başlangıcından bu yana kameranın yakınlaştırma ölçeğinin ne kadar değiştiğini basar.
local UserInputService = game:GetService("UserInputService")
UserInputService.TouchPinch:Connect(function(touchPositions, scale, velocity, state, gameProcessedEvent)
print("Scale difference since beginning of pinch: " .. tostring(scale))
end)
Bir kullanıcının cihazının TouchEnabled olup olmadığını ve bu dokunma olaylarının ateşleneceğini kontrol etmek için, UserInputService.TouchEnabled görün.
Bu etkinlik yalnızca Roblox istemci penceresi odakta olduğunda ateşlenir.Örneğin, pencere azaltıldığında girişler yakalanmayacaktır.Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Parametreler
Kıskaç hareketine dahil olan parmakların ekran konumunu gösteren bir Vector2s dizi, pikselde, parmakların kıskaç hareketine dahil olduğunu gösteren bir dizi.
Başlangıçtan bitişe olan sıkışma büyüklüğü (piksellere bölünerek) başlangıç sıkışma konumları tarafından bölünür.
Dokunma hareketinin hızı (piksel başına saniye) saniye başına.
Hareketin Enum.UserInputState 'i.
Oyun motorunun bu girişi içeriden gözlemlediğini ve buna göre hareket ettiğini gösterir.Genellikle bu, UI işlemiyle ilgilidir, bu nedenle bir düğme bu girişten dokunuldu veya tıklandıysa, gameProcessedEvent olurdu true.Bu ayrıca ContextActionService üzerinden bağlanan giriş olayları için de geçerlidir.
TouchRotate
Dokunma Döndürme etkinliği, bir kullanıcının bir TouchEnabled cihazda iki parmağı döndürdüğünde ateşlenir.
Örneğin, aşağıdaki kod, dokunma dönüşünden bu yana kameranın ne kadar döndüğünü basar.
local UserInputService = game:GetService("UserInputService")
UserInputService.TouchRotate:Connect(function(touchPositions, rotation, velocity, state, gameProcessedEvent)
print("Camera has rotated " .. tostring(rotation) .. " degrees!")
end)
Bir kullanıcının cihazının TouchEnabled olup olmadığını ve bu dokunma olaylarının ateşleneceğini kontrol etmek için, UserInputService.TouchEnabled görün.
Bu etkinlik yalnızca Roblox istemci penceresi odakta olduğunda ateşlenir. Örneğin, pencere azaltıldığında girişler yakalanmayacaktır.
Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Bir mobil cihazda kullanıcının kamerasını kontrol eden temel kodlar bu olayla benzer şekilde çalışan kodu kullanır.Bu etkinlik için en iyi uygulama, varsayılan temel senaryoları geçmek için bir mobil kamera sistemi oluştururken kullanmaktır.
Ayrıca bakın:
Parametreler
Harekete dahil olan parmakların konumlarını gösteren bir Vector2s dizi, işaretleyici.
Hareketin başlangıcından bu yana döndürdüğü derece sayısı.
Döndürme değişikliği (derecelerle) değişikliğin süresine bölünerek (saniyelerle).
Hareketin Enum.UserInputState 'i.
Oyun motorunun bu girişi içeriden gözlemlediğini ve buna göre hareket ettiğini gösterir.Genellikle bu, UI işlemiyle ilgilidir, bu nedenle bir düğme bu girişten dokunuldu veya tıklandıysa, gameProcessedEvent olurdu true.Bu ayrıca ContextActionService üzerinden bağlanan giriş olayları için de geçerlidir.
TouchStarted
Dokunma Başlatma etkinliği, bir kullanıcı parmağını bir TouchEnabled cihazın üzerine yerleştirdiğinde ateşlenir ve cihazla dokunma girişi başlar.
Bu etkinlik, bir kullanıcının cihazın ekranına dokunmaya başladığı zamanı belirlemek için kullanılabilir.Bir kullanıcının ekrana dokunmaya başladığı ve durduğu anı belirlemek için UserInputService.TouchEnded ile eşleştirilebilir.
Dokunma giriş nesnesi, dokunma süresi boyunca aynı giriş nesnesidir.Bu nedenle dokunma nesneleri olduklarında InputObjects karşılaştırması aynı parmak olup olmadığını belirlemek için geçerlidir.
Bir kullanıcının cihazının TouchEnabled olup olmadığını ve bu dokunma olaylarının ateşleneceğini kontrol etmek için, UserInputService.TouchEnabled görün.
Bu etkinlik yalnızca Roblox istemci penceresi odakta olduğunda ateşlenir. Örneğin, pencere azaltıldığında girişler yakalanmayacaktır.
Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Parametreler
Kullanıcının girişiyle ilgili bilgileri içeren bir InputObject örneği.
Oyun motorunun bu girişi içeriden gözlemlediğini ve buna göre hareket ettiğini gösterir.Genellikle bu, UI işlemiyle ilgilidir, bu nedenle bir düğme bu girişten dokunuldu veya tıklandıysa, gameProcessedEvent olurdu true.Bu ayrıca ContextActionService üzerinden bağlanan giriş olayları için de geçerlidir.
TouchSwipe
etkinliği, bir kullanıcı parmaklarını bir cihazda kaydettiğinde ateşlenir.
Bu etkinlik, bir kullanıcının cihazının ekranında parmaklarını kaydırdığı zamanı ve kullanıcının kaydettiği yönü belirlemek için kullanılabilir.
Dokunma giriş hareketinin daha kesin takibi için, UserInputService.TouchMoved kullanın
Bir kullanıcının cihazının TouchEnabled olup olmadığını ve bu dokunma olaylarının ateşleneceğini kontrol etmek için, UserInputService.TouchEnabled görün.
Bu etkinlik yalnızca Roblox istemci penceresi odakta olduğunda ateşlenir. Örneğin, pencere azaltıldığında girişler yakalanmayacaktır.
Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Parametreler
Bir Enum.SwipeDirection , kullanıcının kaydettiği yönü gösteren.
Harekete dahil edilen dokunma sayısı (örneğin parmaklar).
Oyun motorunun bu girişi içeriden gözlemlediğini ve buna göre hareket ettiğini gösterir.Genellikle bu, UI işlemiyle ilgilidir, bu nedenle bir düğme bu girişten dokunuldu veya tıklandıysa, gameProcessedEvent olurdu true.Bu ayrıca ContextActionService üzerinden bağlanan giriş olayları için de geçerlidir.
TouchTap
Dokunma etkinliği, kullanıcının ekranda bir TouchEnabled cihazda parmak dokundurduğunda ateşlenir.
Bu olay, kullanıcının oyun dünyasına dokunup/dokunmadığına bakmaksızın ateşlenecektir. GuiObject bir element.Kullanıcı sadece oyun dünyasına dokunduğunda veya dokunduğunda ateşlenen bir etkinlik arıyorsanız, UserInputService.TouchTapInWorld kullanın.
Bir kullanıcının cihazının TouchEnabled olup olmadığını ve bu dokunma olaylarının ateşleneceğini kontrol etmek için, UserInputService.TouchEnabled görün.
Bu etkinlik yalnızca Roblox istemci penceresi odakta olduğunda ateşlenir. Örneğin, pencere azaltıldığında girişler yakalanmayacaktır.
Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.
Parametreler
Dokunma hareketine dahil olan parmakların konumunu gösteren bir dizi Vector2 nesne, objeleri.
Oyun motorunun bu girişi içeriden gözlemlediğini ve buna göre hareket ettiğini gösterir.Genellikle bu, UI işlemiyle ilgilidir, bu nedenle bir düğme bu girişten dokunuldu veya tıklandıysa, gameProcessedEvent olurdu true.Bu ayrıca ContextActionService üzerinden bağlanan giriş olayları için de geçerlidir.
TouchTapInWorld
TouchTapInWorld etkinliği, kullanıcının ekranda bir TouchEnabled cihazda parmak dokunduğunda ateşlenir.Kullanıcı oyun dünyasına dokunduğunda ateşlenir.
Bu etkinlik, bir kullanıcının ekrana dokunduğu ve bir GuiObject elemanına dokunmadığı zamanı belirlemek için kullanılabilir.Kullanıcı bir GUI öğesine dokunursa, UserInputService.TouchTap TouchTapInWorld yerine ateş edecektir.
Bir kullanıcının cihazının TouchEnabled olup olmadığını ve bu dokunma olaylarının ateşleneceğini kontrol etmek için, UserInputService.TouchEnabled görün.
Bu etkinlik yalnızca Roblox istemci penceresi odakta olduğunda ateşlenir. Örneğin, pencere azaltıldığında girişler yakalanmayacaktır.
Sadece yerel olarak ateş olduğundan, sadece bir LocalScript içinde kullanılabilir.
Ayrıca bakın:
Parametreler
Kullanıcı bir GUI öğesine dokunduysa.
WindowFocusReleased
The UserInputService WindowFocusReleased etkinliği, Roblox istemcisinin penceresinin odak kaybettiğinde ateşlenir - genellikle Roblox istemcisi kullanıcı tarafından azaltıldığında.
Örneğin, aşağıdaki kod Roblox istemcisi odak kaybettiğinde her zaman “Pencere odaklandırma serbest bırakıldı” yazdırır.
local UserInputService = game:GetService("UserInputService")
UserInputService.WindowFocusReleased:Connect(function()
print("Window focus released")
end)
Bu etkinlik, Roblox istemcisinin bir kullanıcının ekranına aktif olarak odaklandığını izlemek için UserInputService.WindowFocused ile birlikte kullanılabilir.
Yalnızca yerel olarak ateş olduğundan, sadece bir LocalScript içinde kullanılabilir.
WindowFocused
The UserInputService WindowFocused etkinliği, Roblox istemcisinin penceresinin odaklanması sırasında ateşlenir - tipik olarak Roblox istemcisi kullanıcının ekranında maksimuma ulaşır/aktif olarak açılır.
Örneğin, aşağıdaki kod herhangi bir Roblox istemcisi odaklanırken “Pencere odaklı” her zaman yazdırır.
local UserInputService = game:GetService("UserInputService")
UserInputService.WindowFocused:Connect(function()
print("Window focused")
end)
Bu etkinlik, Roblox istemcisinin bir kullanıcının ekranına aktif olarak odaklandığını izlemek için UserInputService.WindowFocusReleased ile birlikte kullanılabilir.
Bu olay yalnızca yerel olarak ateş olduğundan, yalnızca bir LocalScript içinde kullanılabilir.