Engine Class
UserInputService
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
สรุป
คุณสมบัติ
MouseIcon:ContentId |
วิธีการ
GamepadSupports(gamepadNum: Enum.UserInputType,gamepadKeyCode: Enum.KeyCode):boolean |
GetGamepadConnected(gamepadNum: Enum.UserInputType):boolean |
GetGamepadState(gamepadNum: Enum.UserInputType):{InputObject} |
GetImageForKeyCode(keyCode: Enum.KeyCode):ContentId |
GetStringForKeyCode(keyCode: Enum.KeyCode,format: Enum.KeyCodeStringFormat):string |
GetSupportedGamepadKeyCodes(gamepadNum: Enum.UserInputType):{any} |
GetUserCFrame(type: Enum.UserCFrame):CFrame |
IsGamepadButtonDown(gamepadNum: Enum.UserInputType,gamepadKeyCode: Enum.KeyCode):boolean |
IsKeyDown(keyCode: Enum.KeyCode):boolean |
IsMouseButtonPressed(mouseButton: Enum.UserInputType):boolean |
IsNavigationGamepad(gamepadEnum: Enum.UserInputType):boolean |
SetNavigationGamepad(gamepadEnum: Enum.UserInputType,enabled: boolean):() |
เหตุการณ์
เอกสารอ้างอิงเกี่ยวกับ API
คุณสมบัติ
AccelerometerEnabled
ตัวอย่างโค้ด
เคลื่อนย้ายลูกบอลโดยใช้ 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)
endModalEnabled
MouseIcon
UserInputService.MouseIcon:ContentId
ตัวอย่างโค้ด
ไอคอนเมาส์แบบกำหนดเอง
local UserInputService = game:GetService("UserInputService")
-- เพื่อกู้คืนเคอร์เซอร์ไปยังค่าที่ตั้งไว้ก่อนหน้านี้ จะต้องบันทึกไว้ในตัวแปร
local savedCursor = nil
local function setTemporaryCursor(cursor: string)
-- อัปเดตเคอร์เซอร์ที่บันทึกไว้เฉพาะเมื่อมันยังไม่ได้บันทึก
if not savedCursor then
savedCursor = UserInputService.MouseIcon
end
UserInputService.MouseIcon = cursor
end
local function clearTemporaryCursor()
-- กู้คืนเคอร์เซอร์เมาส์เฉพาะเมื่อมีเคอร์เซอร์ที่บันทึกไว้เพื่อกู้คืน
if savedCursor then
UserInputService.MouseIcon = savedCursor
-- ไม่กู้คืนเคอร์เซอร์เดียวกันสองครั้ง (อาจเขียนทับสคริปต์อื่น)
savedCursor = nil
end
end
setTemporaryCursor("http://www.roblox.com/asset?id=163023520")
print(UserInputService.MouseIcon)
clearTemporaryCursor()MouseIconContent
ตัวอย่างโค้ด
ไอคอนเมาส์แบบกำหนดเอง
local UserInputService = game:GetService("UserInputService")
-- เพื่อกู้คืนเคอร์เซอร์ไปยังค่าที่ตั้งไว้ก่อนหน้านี้ จะต้องบันทึกไว้ในตัวแปร
local savedCursor = nil
local function setTemporaryCursor(cursor: string)
-- อัปเดตเคอร์เซอร์ที่บันทึกไว้เฉพาะเมื่อมันยังไม่ได้บันทึก
if not savedCursor then
savedCursor = UserInputService.MouseIcon
end
UserInputService.MouseIcon = cursor
end
local function clearTemporaryCursor()
-- กู้คืนเคอร์เซอร์เมาส์เฉพาะเมื่อมีเคอร์เซอร์ที่บันทึกไว้เพื่อกู้คืน
if savedCursor then
UserInputService.MouseIcon = savedCursor
-- ไม่กู้คืนเคอร์เซอร์เดียวกันสองครั้ง (อาจเขียนทับสคริปต์อื่น)
savedCursor = nil
end
end
setTemporaryCursor("http://www.roblox.com/asset?id=163023520")
print(UserInputService.MouseIcon)
clearTemporaryCursor()PreferredInput
ตัวอย่างโค้ด
การตรวจจับการป้อนข้อมูลที่ต้องการ
local UserInputService = game:GetService("UserInputService")
local function preferredInputChanged()
local preferredInput = UserInputService.PreferredInput
if preferredInput == Enum.PreferredInput.Touch then
-- ผู้เล่นอยู่ในอุปกรณ์ที่รองรับการสัมผัสโดยไม่มีประเภทการป้อนข้อมูลอื่นที่เชื่อมต่อ
print("สัมผัส")
elseif preferredInput == Enum.PreferredInput.Gamepad then
-- ผู้เล่นได้เชื่อมต่อหรือโต้ตอบล่าสุดกับเกมแพด
print("เกมแพด")
elseif preferredInput == Enum.PreferredInput.KeyboardAndMouse then
-- ผู้เล่นได้เชื่อมต่อหรือโต้ตอบล่าสุดกับคีย์บอร์ดหรือเมาส์
print("คีย์บอร์ดและเมาส์")
end
end
preferredInputChanged()
UserInputService:GetPropertyChangedSignal("PreferredInput"):Connect(function()
preferredInputChanged()
end)UserHeadCFrame
VREnabled
วิธีการ
GamepadSupports
UserInputService:GamepadSupports(
พารามิเตอร์
ส่งค่ากลับ
GetDeviceAcceleration
ส่งค่ากลับ
ตัวอย่างโค้ด
การเร่งความเร็วของอุปกรณ์เอาต์พุต
local UserInputService = game:GetService("UserInputService")
if UserInputService.AccelerometerEnabled then
local acceleration = UserInputService:GetDeviceAcceleration().Position
print(acceleration)
else
warn("ไม่สามารถดึงข้อมูลการเร่งความเร็วของอุปกรณ์ได้เพราะอุปกรณ์ไม่มีเซนเซอร์การ accelerometer ที่เปิดใช้งาน!")
endGetDeviceGravity
ส่งค่ากลับ
ตัวอย่างโค้ด
การเคลื่อนที่ของวัตถุด้วยไจโรสโคป
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
-- ผูกเหตุการณ์เมื่อไจโรสโคปตรวจจับการเปลี่ยนแปลง
UserInputService.DeviceGravityChanged:Connect(function(accel)
-- เคลื่อนที่ฟองอากาศในโลกตามข้อมูลไจโรสโคป
bubble.Position = Vector3.new(-8 * accel.Position.X, 1.8, -8 * accel.Position.Z)
end)
endGetDeviceRotation
ส่งค่ากลับ
ตัวอย่างโค้ด
การหมุนอุปกรณ์ผลลัพธ์
local UserInputService = game:GetService("UserInputService")
if UserInputService.GyroscopeEnabled then
local _, cf = UserInputService:GetDeviceRotation()
print(cf)
else
warn("ไม่สามารถรับการหมุนของอุปกรณ์ได้เนื่องจากอุปกรณ์ไม่มีการเปิดใช้งานจ gyro!")
endGetGamepadConnected
พารามิเตอร์
ส่งค่ากลับ
GetGamepadState
พารามิเตอร์
ส่งค่ากลับ
GetImageForKeyCode
พารามิเตอร์
ส่งค่ากลับ
ContentId
ตัวอย่างโค้ด
UserInputService - รับรูปภาพสำหรับ KeyCode
local UserInputService = game:GetService("UserInputService")
local imageLabel = script.Parent
local key = Enum.KeyCode.ButtonA
local mappedIconImage = UserInputService:GetImageForKeyCode(key)
imageLabel.Image = mappedIconImageGetLastInputType
ส่งค่ากลับ
ตัวอย่างโค้ด
ตรวจจับประเภทการป้อนข้อมูลล่าสุด
local UserInputService = game:GetService("UserInputService")
if UserInputService:GetLastInputType() == Enum.UserInputType.Keyboard then
print("การป้อนข้อมูลล่าสุดคือคีย์บอร์ด!")
endGetMouseButtonsPressed
ส่งค่ากลับ
ตัวอย่างโค้ด
ตรวจสอบปุ่มเมาส์ที่ถูกกด
local UserInputService = game:GetService("UserInputService")
UserInputService.InputBegan:Connect(function(input, gameProcessedEvent)
-- คืนค่าอาร์เรย์ของปุ่มเมาส์ที่ถูกกด
local buttonsPressed = UserInputService:GetMouseButtonsPressed()
local m1, m2 = false, false
for _, button in buttonsPressed do
if button.UserInputType == Enum.UserInputType.MouseButton1 then
print("MouseButton1 ถูกกด!")
m1 = true
end
if button.UserInputType == Enum.UserInputType.MouseButton2 then
print("MouseButton2 ถูกกด!")
m2 = true
end
if m1 and m2 then
print("ปุ่มเมาส์ทั้งสองถูกกด!")
end
end
end)GetMouseDelta
ส่งค่ากลับ
ตัวอย่างโค้ด
การรับค่า 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("เมาส์ได้เคลื่อนที่", delta, "ตั้งแต่ขั้นตอนล่าสุด")
end
end
RunService:BindToRenderStep("MeasureMouseMovement", Enum.RenderPriority.Input.Value, onRenderStep)GetStringForKeyCode
พารามิเตอร์
| ค่าเริ่มต้น: "Default" |
ส่งค่ากลับ
GetSupportedGamepadKeyCodes
พารามิเตอร์
ส่งค่ากลับ
GetUserCFrame
IsGamepadButtonDown
UserInputService:IsGamepadButtonDown(
พารามิเตอร์
ส่งค่ากลับ
IsKeyDown
พารามิเตอร์
ส่งค่ากลับ
IsMouseButtonPressed
พารามิเตอร์
ส่งค่ากลับ
พารามิเตอร์
ส่งค่ากลับ
RecenterUserHeadCFrame
UserInputService:RecenterUserHeadCFrame():()
ส่งค่ากลับ
()
พารามิเตอร์
ส่งค่ากลับ
()
เหตุการณ์
DeviceAccelerationChanged
พารามิเตอร์
ตัวอย่างโค้ด
ควบคุมผู้เล่นโดยใช้ 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)
endDeviceGravityChanged
พารามิเตอร์
ตัวอย่างโค้ด
เคลื่อนย้ายลูกบอลโดยใช้ 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)
endDeviceRotationChanged
พารามิเตอร์
GamepadConnected
พารามิเตอร์
GamepadDisconnected
พารามิเตอร์
InputBegan
พารามิเตอร์
InputChanged
พารามิเตอร์
InputEnded
พารามิเตอร์
JumpRequest
ตัวอย่างโค้ด
ปิดการกระโดดเริ่มต้น
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")
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
local processJumpRequest = false
local COOLDOWN_TIME = 0.5
local function jumpRequest()
if processJumpRequest == false then
processJumpRequest = true
-- ประมวลผลการร้องขอกระโดดที่กำหนดเอง
print("การขอกระโดดถูกเรียกร้อง!")
-- รีเซ็ตตัวแปร debounce หลังจาก cooldown
task.wait(COOLDOWN_TIME)
processJumpRequest = false
end
end
UserInputService.JumpRequest:Connect(jumpRequest)LastInputTypeChanged
พารามิเตอร์
PointerAction
TextBoxFocused
พารามิเตอร์
ตัวอย่างโค้ด
การแก้ไข TextBox เมื่อได้รับโฟกัสและปล่อยโฟกัส
local UserInputService = game:GetService("UserInputService")
local function textBoxFocused(textBox)
textBox.BackgroundTransparency = 0
end
local function textBoxFocusReleased(textBox)
textBox.BackgroundTransparency = 0.5
end
UserInputService.TextBoxFocused:Connect(textBoxFocused)
UserInputService.TextBoxFocusReleased:Connect(textBoxFocusReleased)TextBoxFocusReleased
พารามิเตอร์
ตัวอย่างโค้ด
การแก้ไข TextBox เมื่อได้รับโฟกัสและปล่อยโฟกัส
local UserInputService = game:GetService("UserInputService")
local function textBoxFocused(textBox)
textBox.BackgroundTransparency = 0
end
local function textBoxFocusReleased(textBox)
textBox.BackgroundTransparency = 0.5
end
UserInputService.TextBoxFocused:Connect(textBoxFocused)
UserInputService.TextBoxFocusReleased:Connect(textBoxFocusReleased)TouchDrag
UserInputService.TouchDrag(
พารามิเตอร์
TouchEnded
พารามิเตอร์
TouchLongPress
UserInputService.TouchLongPress(
พารามิเตอร์
TouchMoved
พารามิเตอร์
TouchPan
UserInputService.TouchPan(
touchPositions:{any}, totalTranslation:Vector2, velocity:Vector2, state:Enum.UserInputState, gameProcessedEvent:boolean
พารามิเตอร์
TouchPinch
UserInputService.TouchPinch(
touchPositions:{any}, scale:number, velocity:number, state:Enum.UserInputState, gameProcessedEvent:boolean
พารามิเตอร์
TouchRotate
UserInputService.TouchRotate(
touchPositions:{any}, rotation:number, velocity:number, state:Enum.UserInputState, gameProcessedEvent:boolean
พารามิเตอร์
TouchStarted
พารามิเตอร์
TouchSwipe
UserInputService.TouchSwipe(
พารามิเตอร์
TouchTap
TouchTapInWorld
UserCFrameChanged
WindowFocusReleased
ตัวอย่างโค้ด
สคริปต์การให้ความสนใจหน้าต่าง (LocalScript)
local UserInputService = game:GetService("UserInputService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local awayEvent = ReplicatedStorage:WaitForChild("AwayEvent")
local function focusGained()
awayEvent:FireServer(false)
end
local function focusReleased()
awayEvent:FireServer(true)
end
UserInputService.WindowFocused:Connect(focusGained)
UserInputService.WindowFocusReleased:Connect(focusReleased)สคริปต์เบี่ยงเบนจอภาพ (สคริปต์)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local awayEvent = Instance.new("RemoteEvent")
awayEvent.Name = "AwayEvent"
awayEvent.Parent = ReplicatedStorage
local function manageForceField(player, away)
if away then
local forceField = Instance.new("ForceField")
forceField.Parent = player.Character
else
local forceField = player.Character:FindFirstChildOfClass("ForceField")
if forceField then
forceField:Destroy()
end
end
end
awayEvent.OnServerEvent:Connect(manageForceField)