Mouse
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
Fare , daha geniş bir kapsama sahip olan UserInputService ve ContextActionService tarafından geçildi, daha fazla özellik içeriyor ve çapraz platform modellerini daha iyi destekliyor.Yaygın kullanımı nedeniyle desteklenmeye devam ediyor, ancak bu alternatifleri kullanmayı düşünmelisiniz.
Fare nesnesi çeşitli API'ler barındırır, öncelikle düğmeler ve ışın atışı için.Bir Player:GetMouse() üzerinden erişilebilir Players.LocalPlayer bir LocalScript içinde çağrılan .Ayrıca Tool.Equipped etkinliği tarafından geçer.
- Farenin görünümünü değiştiren Icon özelliği için en belirgin olanıdır.
- Sürekli olarak ekran fare konumunu 3B dünyaya TargetFilter özelliğini kullanarak aktarır, sonuçları raycast'ını Hit , Target ve TargetSurface özelliklerinde saklar.Bunlar basit durumlarda yararlı olabilir, ancak WorldRoot:Raycast() daha karmaşık ışınlanma senaryolarında kullanılmalıdır.
-- Bir YerelScript'ten:local Players = game:GetService("Players")local player = Players.LocalPlayerlocal mouse = player:GetMouse()-- Fare simgesini ayarlamamouse.Icon = "rbxasset://SystemCursors/Wait"
Not:
Bu nesne, işaret hareketini kontrol etmiyor/sınırlandırmıyor. Bunun için, UserInputService.MouseBehavior ve UserInputService.MouseDeltaSensitivity görün.
Eğer iki işlev aynı giriş olayına bağlıysa, örneğin , her iki işlev de olay ateşlendiğinde çalışacaktır.Etkinlikler bu davranışı desteklemiyor olduğundan, batış/geçiş girişi konsepti yoktur.Ancak, ContextActionService bu davranışı BindAction aracılığıyla sahiptir.
Bir fare tüm platformlarda mevcut olmayabilir, ancak Fare hala mobil (dokunma) ve konsol (oyun kolu) üzerinde çalışır, ki bunlar genellikle fare veya işaretçi donanımına sahip değildir.Açık çapraz platform davranışları için UserInputService ve ContextActionService kullanın.
Deneyiminizde girişleri özelleştirme hakkında daha fazla bilgi için Giriş ve Kamera bakın.
Özet
Özellikler
Farenin 3B uzaydaki konumunun CFrame 'si.
Mouse simgesi olarak kullanılan görüntünün içeriği ID'si.
A Datatype.CFrame``Class.Workspace.CurrentCamera konumlandırılmış ve fareye yönelik 3B konumuna yönelik.
3B uzaydaki nesne mouse işaret ediyor.
Bir nesneyi (ve onun soyundakileri) Mouse.Hit ve Mouse.Target saptarken göz ardı edilmesini sağlar.
Farenin işaret ettiği Enum.NormalId yüzeyin BasePart üzerinde olduğunu gösterir.
Fare dünya konumuna yönelik bir Ray yönlendirilmiş, Workspace.CurrentCamera dünya konumundan kaynaklanan.
Oyun penceresinin genişliğini piksel olarak tanımlar.
Oyun penceresinin yüksekliğini piksel olarak tanımlar.
Farenin ekranda konumunun X (dikey) bileşenini tanımlar.
Farenin ekran konumunun Y (dikey) bileşenini tanımlar.
Olaylar
Sol fare düğmesine basıldığında ateş eder.
Sol fare düğmesi serbest bırakıldığında ateş eder.
Doğru fare düğmesi basıldığında ateş eder.
Sağ fare düğmesi serbest bırakıldığında ateş edilir.
Fare başka bir fare etkinliğine geçmediği her kalp atışı sırasında ateş edilir.
Fare hareket ettirildiğinde ateş edilir.
Fare tekerleği geriye kaydığında ateş eder.
Fare tekeri ileriye kaydırıldığında ateş eder.
Özellikler
Hit
Kod Örnekleri
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local beam = Instance.new("Beam")
beam.Segments = 1
beam.Width0 = 0.2
beam.Width1 = 0.2
beam.Color = ColorSequence.new(Color3.new(1, 0, 0))
beam.FaceCamera = true
local attachment0 = Instance.new("Attachment")
local attachment1 = Instance.new("Attachment")
beam.Attachment0 = attachment0
beam.Attachment1 = attachment1
beam.Parent = workspace.Terrain
attachment0.Parent = workspace.Terrain
attachment1.Parent = workspace.Terrain
local function onRenderStep()
local character = player.Character
if not character then
beam.Enabled = false
return
end
local head = character:FindFirstChild("Head")
if not head then
beam.Enabled = false
return
end
beam.Enabled = true
local origin = head.Position
local finish = mouse.Hit.Position
attachment0.Position = origin
attachment1.Position = finish
end
RunService.RenderStepped:Connect(onRenderStep)
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local player = Players.LocalPlayer
local camera = Workspace.CurrentCamera
local mouse = player:GetMouse()
local camPos = camera.CFrame.Position
local function onButton1Down()
print("Mouse.Hit:", mouse.Hit.Position)
print("camPos:", camPos)
print("Mouse.Origin:", mouse.Origin.Position)
print("Magnitude:", (mouse.Origin.Position - camPos).Magnitude)
end
mouse.Button1Down:Connect(onButton1Down)
Icon
Kod Örnekleri
local Players = game:GetService("Players")
local mouse = Players.LocalPlayer:GetMouse()
mouse.Icon = "http://www.roblox.com/asset?id=163023520"
Origin
Kod Örnekleri
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local player = Players.LocalPlayer
local camera = Workspace.CurrentCamera
local mouse = player:GetMouse()
local camPos = camera.CFrame.Position
local function onButton1Down()
print("Mouse.Hit:", mouse.Hit.Position)
print("camPos:", camPos)
print("Mouse.Origin:", mouse.Origin.Position)
print("Magnitude:", (mouse.Origin.Position - camPos).Magnitude)
end
mouse.Button1Down:Connect(onButton1Down)
Target
Kod Örnekleri
local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
local backpack = localPlayer:WaitForChild("Backpack")
local tool = Instance.new("Tool")
tool.RequiresHandle = false
tool.CanBeDropped = false
tool.Parent = backpack
tool.Equipped:Connect(function(mouse)
mouse.Button1Down:Connect(function()
if mouse.Target and mouse.Target.Parent then
mouse.Target.BrickColor = BrickColor.random()
end
end)
end)
TargetFilter
TargetSurface
Kod Örnekleri
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local surfaceTypes = {
Enum.SurfaceType.Smooth,
Enum.SurfaceType.Glue,
Enum.SurfaceType.Weld,
Enum.SurfaceType.Studs,
Enum.SurfaceType.Inlet,
Enum.SurfaceType.Universal,
Enum.SurfaceType.Hinge,
Enum.SurfaceType.Motor,
}
local function onMouseClick()
-- make sure the mouse is pointing at a part
local target = mouse.Target
if not target then
return
end
local surfaceType = surfaceTypes[math.random(1, #surfaceTypes)]
local surface = mouse.TargetSurface
local propertyName = surface.Name .. "Surface"
mouse.Target[propertyName] = surfaceType
end
mouse.Button1Down:Connect(onMouseClick)
UnitRay
ViewSizeX
Kod Örnekleri
local Players = game:GetService("Players")
-- Note: You should use ContextActionService or UserInputService instead of
-- the Mouse object for accomplishing this task.
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local function onMouseMove()
-- Construct Vector2 objects for the mouse's position and screen size
local position = Vector2.new(mouse.X, mouse.Y)
local size = Vector2.new(mouse.ViewSizeX, mouse.ViewSizeY)
-- A normalized position will map the top left (just under the topbar)
-- to (0, 0) the bottom right to (1, 1), and the center to (0.5, 0.5).
-- This is calculated by dividing the position by the total size.
local normalizedPosition = position / size
print(normalizedPosition)
end
mouse.Move:Connect(onMouseMove)
ViewSizeY
Kod Örnekleri
local Players = game:GetService("Players")
-- Note: You should use ContextActionService or UserInputService instead of
-- the Mouse object for accomplishing this task.
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local function onMouseMove()
-- Construct Vector2 objects for the mouse's position and screen size
local position = Vector2.new(mouse.X, mouse.Y)
local size = Vector2.new(mouse.ViewSizeX, mouse.ViewSizeY)
-- A normalized position will map the top left (just under the topbar)
-- to (0, 0) the bottom right to (1, 1), and the center to (0.5, 0.5).
-- This is calculated by dividing the position by the total size.
local normalizedPosition = position / size
print(normalizedPosition)
end
mouse.Move:Connect(onMouseMove)
Kod Örnekleri
local Players = game:GetService("Players")
-- Note: You should use ContextActionService or UserInputService instead of
-- the Mouse object for accomplishing this task.
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local function onMouseMove()
-- Construct Vector2 objects for the mouse's position and screen size
local position = Vector2.new(mouse.X, mouse.Y)
local size = Vector2.new(mouse.ViewSizeX, mouse.ViewSizeY)
-- A normalized position will map the top left (just under the topbar)
-- to (0, 0) the bottom right to (1, 1), and the center to (0.5, 0.5).
-- This is calculated by dividing the position by the total size.
local normalizedPosition = position / size
print(normalizedPosition)
end
mouse.Move:Connect(onMouseMove)
Kod Örnekleri
local Players = game:GetService("Players")
-- Note: You should use ContextActionService or UserInputService instead of
-- the Mouse object for accomplishing this task.
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local function onMouseMove()
-- Construct Vector2 objects for the mouse's position and screen size
local position = Vector2.new(mouse.X, mouse.Y)
local size = Vector2.new(mouse.ViewSizeX, mouse.ViewSizeY)
-- A normalized position will map the top left (just under the topbar)
-- to (0, 0) the bottom right to (1, 1), and the center to (0.5, 0.5).
-- This is calculated by dividing the position by the total size.
local normalizedPosition = position / size
print(normalizedPosition)
end
mouse.Move:Connect(onMouseMove)
Yöntemler
Olaylar
Button1Down
Button1Up
Button2Down
Button2Up
Idle
Kod Örnekleri
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local events = {
"Button1Down",
"Button1Up",
"Button2Down",
"Button2Up",
"Idle",
"Move",
"WheelBackward",
"WheelForward",
"KeyDown",
"KeyUp",
}
local currentEvent
local frame = 0
local function processInput()
frame = frame + 1
print("Frame", frame, "- mouse event was passed to", currentEvent)
end
for _, event in pairs(events) do
mouse[event]:Connect(function()
currentEvent = event
end)
end
RunService:BindToRenderStep("ProcessInput", Enum.RenderPriority.Input.Value, processInput)
Move
Kod Örnekleri
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local point
local down
local function selectPart()
if mouse.Target and not mouse.Target.Locked then
point = mouse.Target
mouse.TargetFilter = point
down = true
end
end
local function movePart()
if down and point then
local posX, posY, posZ = mouse.Hit.X, mouse.Hit.Y, mouse.Hit.Z
point.Position = Vector3.new(posX, posY, posZ)
end
end
local function deselectPart()
down = false
point = nil
mouse.TargetFilter = nil
end
mouse.Button1Down:Connect(selectPart)
mouse.Button1Up:Connect(deselectPart)
mouse.Move:Connect(movePart)
WheelBackward
Kod Örnekleri
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local function onWheelBackward()
print("Wheel went backwards!")
end
mouse.WheelBackward:Connect(onWheelBackward)
WheelForward
Kod Örnekleri
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local function onWheelForward()
print("Wheel went forward!")
end
mouse.WheelForward:Connect(onWheelForward)