UserInputService

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oluşturulamaz
Hizmet
Çoğaltılmamış

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

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Kullanıcının cihazının bir hızlandırıcıya sahip olup olmadığını tanımlar.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Kullanıcı tarafından kullanılan cihazın mevcut bir oyun kolu olup olmadığını tanımlar.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Kullanıcının cihazının bir jiroskopa sahip olup olmadığını tanımlar.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    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.

  • Çoğaltılmamış
    Paralel oku

    Kullanıcının Mouse 'sindeki delta (değişim) çıkısını ölçeklendirir.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Kullanıcının cihazının bir fareye sahip olup olmadığını tanımlar.

  • MouseIcon:ContentId
    Paralel oku

    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.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Ekran üzeri klavyenin konumunu belirler.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Ekran üzeri klavyenin boyutunu belirler.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Ekranda bir klavyenin şu anda kullanıcının ekranında görülebilir olup olmadığını tanımlar.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku
  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Kullanıcının mevcut cihazının dokunmatik bir ekrana sahip olup olmadığını tanımlar.

  • Salt Okunur
    Çoğaltılmamış
    Paralel oku

    Kullanıcının sanal gerçeklik kulaklığı kullandığını gösterir.

Yöntemler

Etkinlikler

Özellikler

AccelerometerEnabled

Salt Okunur
Çoğaltılmamış
Paralel oku

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.AccelerometerEnabled
if accelerometerEnabled then
print("Accelerometer enabled!")
else
print("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.

Move a Ball using the 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

Salt Okunur
Çoğaltılmamış
Paralel oku

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

Salt Okunur
Çoğaltılmamış
Paralel oku

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.GyroscopeEnabled
if gyroIsEnabled then
print("Gyroscope is enabled!")
else
print("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

Salt Okunur
Çoğaltılmamış
Paralel oku

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.

Klavye etkin olup olmadığını kontrol et

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

Paralel oku

Bu özellik, kullanıcının mouse'unun Enum.MouseBehavior enum'e göre nasıl davrandığını ayarlar. Üç değere ayarlanabilir:

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.

Bir Dürbün Kodu Oluştur

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

Çoğaltılmamış
Paralel oku

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.

Bir Dürbün Kodu Oluştur

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

Salt Okunur
Çoğaltılmamış
Paralel oku

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 then
print("The user's device has an available mouse!")
else
print("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.

Bir Dürbün Kodu Oluştur

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

ContentId
Paralel oku

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.

KullanıcıGirişServisi.MouseIcon

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

Paralel oku

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.

Hide Mouse During Keyboard Input

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

Salt Okunur
Çoğaltılmamış
Paralel oku

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

Salt Okunur
Çoğaltılmamış
Paralel oku

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

Salt Okunur
Çoğaltılmamış
Paralel oku

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

Salt Okunur
Çoğaltılmamış
Paralel oku

TouchEnabled

Salt Okunur
Çoğaltılmamış
Paralel oku

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 then
print("The user's device has a touchscreen!")
else
print("The user's device does not have a touchscreen!")
end

Ayrıca bakın:

VREnabled

Salt Okunur
Çoğaltılmamış
Paralel oku

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.VREnabled
if isUsingVR then
print("User is using a VR headset!")
else
print("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.

VR Head Tracking

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

gamepadNum: Enum.UserInputType

Oyun kolu Enum.UserInputType 'inin.

Varsayılan değer: ""
gamepadKeyCode: Enum.KeyCode

Soruşturulan düğmenin Enum.KeyCode 'si.

Varsayılan değer: ""

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.

Output Device 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.

Moving Objects with the Gyroscope

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:

  1. Delta özelliği, son olarak gerçekleşen dönüş miktarını tanımlar
  2. 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.

Output Device Rotation

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

gamepadNum: Enum.UserInputType

Soruşturulan oyun kolu Enum.UserInputType 'nin.

Varsayılan değer: ""

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

gamepadNum: Enum.UserInputType

Soruşturulan oyun kolu ile eşleşen Enum.UserInputType .

Varsayılan değer: ""

Dönüşler

Verilen oyun konsoluna tüm mevcut girişlerin mevcut durumunu temsil eden bir dizi InputObjects .

GetImageForKeyCode

ContentId

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

keyCode: Enum.KeyCode

İlgili görüntüyü almak için kullanılacak Enum.KeyCode .

Varsayılan değer: ""

Dönüşler

ContentId

Geri döndürülen görüntü varlığı ID'si.

Kod Örnekleri

Bu API, talep edilen görüntüyü verilen Enum.KeyCode.

KullanıcıGirişServisi - AnahtarKod için GörüntüAlma

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.

Detect Last Input Type

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).

Check Pressed Mouse Buttons

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.

Getting Mouse Delta

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

Farenin mevcut ekran konumunu temsil eden bir Vector2 pikseldeki,

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:


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.Parent
local mapKey = Enum.KeyCode.M
textLabel.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.Parent
local key = Enum.KeyCode.ButtonA
local mappings = {
ButtonA = "rbxasset://BUTTON_A_ASSET", -- Replace with the desired ButtonA asset
ButtonCross = "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

keyCode: Enum.KeyCode
Varsayılan değer: ""

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

gamepadNum: Enum.UserInputType

Oyun kolu Enum.UserInputType 'inin.

Varsayılan değer: ""

Dönüşler

Verilen oyun kolu tarafından desteklenen bir dizi KeyCodes .

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.

Desteklenen Oyun Konsolu Tuşları Bağlanıyor

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.ButtonA
local gamepad = Enum.UserInputType.Gamepad1
local 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:

Parametreler

gamepadNum: Enum.UserInputType

Verilen oyun kolu Enum.UserInputType 'nin.

Varsayılan değer: ""
gamepadKeyCode: Enum.KeyCode

Belirtilen düğmenin Enum.KeyCode 'si.

Varsayılan değer: ""

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:

Parametreler

keyCode: Enum.KeyCode

Anahtarın Enum.KeyCode 'si.

Varsayılan değer: ""

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

mouseButton: Enum.UserInputType

Fare düğmesinin Enum.UserInputType 'si.

Varsayılan değer: ""

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) then
print("Gamepad is a navigation gamepad!")
else
print("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

gamepadEnum: Enum.UserInputType

Belirtilen oyun kolu Enum.UserInputType 'inin.

Varsayılan değer: ""

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

gamepadEnum: Enum.UserInputType

Belirtilen oyun kolu Enum.UserInputType 'inin.

Varsayılan değer: ""
enabled: boolean

Belirtilen oyun kolu GUI navigatörünü hareket ettirebilir mi.

Varsayılan değer: ""

Dönüşler

()

Kod Örnekleri

Bu örnek, Gamepad1 gezinti oyun kolu olarak ayarlar ve Enum.UserInputType.Gamepad1 ve true gibi argümanları geçerek.

KullanıcıGirişHizmeti:NavigasyonOyunKoluAyarlandı

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

acceleration: InputObject

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.

Control Players Using the Accelerometer

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

gravity: InputObject

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.

Move a Ball using the 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

rotation: InputObject

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.

cframe: CFrame

Cihazın mevcut yönünü temsil eden bir CFrame .


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.

Move a Ball using the 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

gamepadNum: Enum.UserInputType

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

gamepadNum: Enum.UserInputType

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.

gameProcessedEvent: boolean

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.

gameProcessedEvent: boolean

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,

gameProcessedEvent: boolean

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.

Zıplamayı Devre Dışı Bırak

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

lastInputType: Enum.UserInputType

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.

Hide Mouse During Keyboard Input

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

wheel: number
pan: Vector2
pinch: number
gameProcessedEvent: boolean

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

textboxReleased: TextBox

Odak kaybeden TextBox .


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

textboxFocused: TextBox

Odak kazanan TextBox .


TouchDrag

Parametreler

dragDirection: Enum.SwipeDirection
numberOfTouches: number
gameProcessedEvent: boolean

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.

gameProcessedEvent: boolean

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

touchPositions: Array

Harekete dahil olan parmakların konumunu gösteren bir dizi Vector2 nesne, işaret eden bir dizi.

gameProcessedEvent: boolean

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.

gameProcessedEvent: boolean

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

touchPositions: Array

Dokunma konumlarını (örneğin parmaklar) işaret eden bir dizi Vector2 nesne, harekete dahil olan dokunma nesneleri.

totalTranslation: Vector2

Tencere hareketinin başından sonuna kadar boyutu (piksel olarak).

velocity: Vector2

Tava hareketinin hızı (piksel başına saniye) saniye başına.

gameProcessedEvent: boolean

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

touchPositions: Array

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.

scale: number

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.

velocity: number

Dokunma hareketinin hızı (piksel başına saniye) saniye başına.

gameProcessedEvent: boolean

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

touchPositions: Array

Harekete dahil olan parmakların konumlarını gösteren bir Vector2s dizi, işaretleyici.

rotation: number

Hareketin başlangıcından bu yana döndürdüğü derece sayısı.

velocity: number

Döndürme değişikliği (derecelerle) değişikliğin süresine bölünerek (saniyelerle).

gameProcessedEvent: boolean

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.

gameProcessedEvent: boolean

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

swipeDirection: Enum.SwipeDirection

Bir Enum.SwipeDirection , kullanıcının kaydettiği yönü gösteren.

numberOfTouches: number

Harekete dahil edilen dokunma sayısı (örneğin parmaklar).

gameProcessedEvent: boolean

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

touchPositions: Array

Dokunma hareketine dahil olan parmakların konumunu gösteren bir dizi Vector2 nesne, objeleri.

gameProcessedEvent: boolean

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

position: Vector2

Dokunma konumunu gösteren bir Vector2 .

processedByUI: boolean

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.