Mouse
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
Mysz została zastąpiona przez UserInputService i ContextActionService, które obejmują szerszy zakres, są bogatsze w funkcje i lepiej wspierają wzorce wieloplatformowe .Wciąż jest wspierany ze względu na jego szerokie wykorzystanie, ale powinieneś mocno rozważyć wykorzystanie tych alternatyw.
Przedmiot Myszka domuje różne API dla wskazówki, głównie dla przycisków i rzucania promieni.Można do niego uzyskać dostęp poprzez Player:GetMouse() wezwany na Players.LocalPlayer w LocalScript .Przechodzi również przez wydarzenie Tool.Equipped.
- Jest najbardziej widoczny dla właściwości Icon, która zmienia wygląd kurora.
- Ciągle rozsyła pozycję myszy ekranu do świata 3D za pomocą właściwości TargetFilter, przechowując wyniki raycastu w Hit, Target i TargetSurface właściwościach.Mogą one być przydatne w prostych przypadkach, ale WorldRoot:Raycast() należy używać w bardziej skomplikowanych scenariuszach raycastingu.
-- Z lokalnego skryptu:local Players = game:GetService("Players")local player = Players.LocalPlayerlocal mouse = player:GetMouse()-- Ustawienie ikony ikonamouse.Icon = "rbxasset://SystemCursors/Wait"
Uwaga:
Ten obiekt nie kontroluje/ogranicza ruch wskaznika. Aby to zrobić, zobacz UserInputService.MouseBehavior i UserInputService.MouseDeltaSensitivity.
Jeśli dwie funkcje są połączone z tym samym wydarzeniem wejściowym, takim jak , obie funkcje zostaną uruchomione, gdy wydarzenie się wystrzeli.Nie ma pojęcia o zatapianiu/przekazywaniu wejścia, ponieważ wydarzenia nie wspierają tego zachowania.Jednak ContextActionService ma to zachowanie poprzez BindAction .
Chociaż mysz może nie być dostępna na wszystkich platformach, mysz nadal będzie działać na urządzeniach mobilnych (dotyk) i konsolach (gamepad), które zwykle nie mają myszy lub urządzeń wskazujących.Dla wyraźnych wieloplatformowych zachowań użyj UserInputService i ContextActionService.
Zobacz Wprowadzenie i kamera dla więcej informacji o dostosowywaniu wejść w swoim doświadczeniu.
Podsumowanie
Właściwości
The CFrame pozycja myszy w przestrzeni 3D.
ID treści obrazu użytego jako ikona Mouse.
A CFrame położony na Workspace.CurrentCamera i skierowany w kierunku pozycji 3D myszy.
Obiekt w przestrzeni 3D, na który wskazuje mouse, jest wskazany.
Określa obiekt (i jego potomstwo), który ma zostać pominięty przy określaniu Mouse.Hit i Mouse.Target.
Wskazuje Enum.NormalId powierzchnię BasePart na której wskazuje mysz.
A Ray skierowany w kierunku pozycji świata myszy, pochodzący z pozycji świata Workspace.CurrentCamera.
Opisuje szerokość okna gry w pikselach.
Opisuje wysokość okna gry w pikselach.
Opisuje komponent X (poziomy) pozycji myszy na ekranie.
Opisuje komponent Y (pionowy) pozycji ekranu myszy.
Zdarzenia
Wybucha, gdy naciśnięty jest lewy przycisk myszy.
Wybucha, gdy wypuszczony zostanie lewy przycisk myszy.
Wybucha, gdy naciśnięty jest odpowiedni przycisk myszy.
Wystrzeliwany, gdy wypuszczono odpowiedni przycisk myszy.
Wystrzelany podczas każdego bicia serca, gdy mysz nie jest przekazywana do innego wydarzenia myszy.
Wystrzeliwany, gdy mysz jest przesuwana.
Wystrzeliwuje, gdy koło myszy jest przewijane wstecz.
Wybucha, gdy koło myszy jest przewijane w przód.
Właściwości
Hit
Właściwość ta wskazuje na CFrame pozycję myszy w przestrzeni 3D. Zauważ, że Mouse.TargetFilter i jej potomkowie zostaną pominięte.
Twórcy mogą uzyskać pozycję trafienia tak:
local position = mouse.Hit.Position
Hit jest często używany przez Tools do wystrzeliwania broni w kierunku myszy w trzeciej osobie.
Programiści szukający BasePart myszy wskazującej powinni używać Mouse.Target .
Jak jest obliczany Mouse.Hit?
Pozycja Hit CFrame jest obliczana jako punkt styku między wewnętrznym Ray (rozszerzoną wersją Mouse.UnitRay ) a obiektem w przestrzeni 3D (takim jak część)
Orientacja ramki trafień odpowiada kierunkowi Mouse.UnitRay.
local unitRayDirection = mouse.UnitRay.Directionlocal mouseHitDirection = mouse.Hit.lookVector-- unitRayDirection ≈ mouseHitDirection-- the vectors are approximately equal
Uwaga, rolka Workspace.CurrentCamera nie jest używana przy obliczaniu orientacji trafienia CFrame .
Promień wewnętrzny myszy rozciąga się na 1000 szpilkach.Jeśli mysz nie wskazuje na obiekt w przestrzeni 3D (na przykład, gdy wskazuje na niebo), ta właściwość będzie oddalona o 1000 jednostek od Workspace.CurrentCamera .
Przykłady kodu
The code in this sample, when placed inside a LocalScript within StarterPlayerScripts will draw a red laser beam between the character's head and Mouse.Hit at all times.
Note, this beam will pass directly through obstructions in third person as the Mouse's raycasting is done from the Workspace.CurrentCamera not the head.
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)
The code below visualizes the difference between Mouse.Hit and Mouse.Origin. In order to do this, the code uses the Vector3 positions of the hit and origin CFrame values using .p.
The difference is that the origin is "where the mouse came from" (its origin) and the hit is the position where the mouse hits (is when the player presses their mouse).
This example also visualizes that the mouse origin is very similar to the position of the CurrentCamera by printing the magnitude (distance) between the two positions.
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
Ikona jest właściwością, która określa obraz używany jako wskaznik.Jeśli jest pusty, używany jest domyślny strzał.Gdy kurser przewija się nad GuiButton, ta właściwość jest tymczasowo ignorowana.
Aby całkowicie ukryć kursor, nie używaj przejrzystego obrazu - zamiast tego ustaw UserInputService.MouseIconEnabled na fałsz.
Aby uzyskać/ustawić ikonę myszy użytkownika w doświadczeniach, powinieneś użyć UserInputService.MouseIcon .Mouse.Icon będzie przestarzały po wydaniu nowej API dla pluginów do ustawienia kurora myszy.
Projektowanie kurora
Następujące wytyczne mogą okazać się przydatne przy tworzeniu własnych kursoров myszy:
- Wymiary używanego obrazu określają rozmiar kurora.
- Środek obrazu jest miejscem, w którym wydawane są wpisy myszy.
- Domyślny obraz myszy ma 64x64 pikseli, z myszą zajmującą 17x24 pikseli przestrzeni.
Systemowe kursorzy
Kiedy używasz odzyskanych PluginMouse z Plugin:GetMouse(), możesz używać następujących ikon podobnych do domyślnych kursoresów systemu, takich jak ręce, strzały, belki I itp.Możesz ich używać z wydarzeniami GUI takimi jak MouseEnter, MouseLeave i MouseButton1Down w celu zapewnienia spójnego doświadczenia Studio podczas interakcji z pewnymi rodzajami komponentów GUI.Zauważ, że działają one tylko dla wtyczek Studio; nie będą działać dla innych obiektów Mouse.
<th>Aktywum</th><th>Zalecane użycie</th></tr></thead><tbody><tr><td><img src="../../../assets/misc/Mouse-Icon-Pointer.png" width="30"></img></td><td><code>rbxasset://SystemCursors/Arrow</code></td><td>Domyślne klikanie i wybieranie.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-PointingHand.png" width="30"></img></td><td><code>rbxasset://SystemCursors/PointingHand</code></td><td>Przesuwanie nad aktywnym linkiem/przyciskiem.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-OpenHand.png" width="30"></img></td><td><code>rbxasset://SystemCursors/OpenHand</code></td><td>Przesuwanie nad przedmiotem przeciąganym.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-GrabbingHand.png" width="30"></img></td><td><code>rbxasset://SystemCursors/ClosedHand</code></td><td>Przesuwanie przedmiotu.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-IBeam.png" width="30"></img></td><td><code>rbxasset://SystemCursors/IBeam</code></td><td>Przesuwanie się po polu tekstowym.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-ResizeNS.png" width="30"></img></td><td><code>rbxasset://SystemCursors/SizeNS</code></td><td>Przesuwanie nad pionowym uchwytem przesuwania rozmiaru.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-ResizeEW.png" width="30"></img></td><td><code>rbxasset://SystemCursors/SizeEW</code></td><td>Przesuwanie nad pionowym uchwytem przesuwania rozmiaru.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-ResizeNESW.png" width="30"></img></td><td><code>rbxasset://SystemCursors/SizeNESW</code></td><td>Przesuwanie nad krawędzią uchwytu przesuwania rozmiaru.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-ResizeNWSE.png" width="30"></img></td><td><code>rbxasset://SystemCursors/SizeNWSE</code></td><td>Przesuwanie nad krawędzią uchwytu przesuwania rozmiaru.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-ResizeAll.png" width="30"></img></td><td><code>rbxasset://SystemCursors/SizeAll</code></td><td>Przesuwanie nad uchwytem przesuwania wielokierunkowego.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-ResizeSplitV.png" width="30"></img></td><td><code>rbxasset://SystemCursors/SplitNS</code></td><td>Przesuwanie nad pionowym "podzielonym" uchwytem.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-ResizeSplitH.png" width="30"></img></td><td><code>rbxasset://SystemCursors/SplitEW</code></td><td>Przesuwanie nad poziomym "podzielonym" uchwytem.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-Forbidden.png" width="30"></img></td><td><code>rbxasset://SystemCursors/Forbidden</code></td><td>Przesuwanie nad zamkniętym/zakazanym przedmiot.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-Wait.png" width="30"></img></td><td><code>rbxasset://SystemCursors/Wait</code></td><td>Wskazuje, że akcja jest w toku.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-Busy.png" width="30"></img></td><td><code>rbxasset://SystemCursors/Busy</code></td><td>Wskazuje, że system jest zajęty.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-Crosshair.png" width="30"></img></td><td><code>rbxasset://SystemCursors/Cross</code></td><td>Przesuwanie nad obszarem wyboru precyzyjnego.</td></tr></tbody>
Spójrz* |
---|
Przykłady kodu
This example changes the Players.LocalPlayer mouse icon to look like a dragon image.
local Players = game:GetService("Players")
local mouse = Players.LocalPlayer:GetMouse()
mouse.Icon = "http://www.roblox.com/asset?id=163023520"
Origin
Właściwość pochodzenia Mouse wskazuje na CFrame miejsce, z którego pochodziła mysz.Znajduje się on na Workspace.CurrentCamera i jest skierowany w kierunku pozycji 3D myszy.
Mouse.UnitRay rozpoczyna się w tej samej pozycji co Pochodzenie i rozciąga się o jeden ćwok w tym samym kierunku.
local unitRay = mouse.UnitRaylocal origin = mouse.Origin-- unitRay.Direction = pochodzenie.p-- unitRay.Direction ≈ origin.lookVector
Dla pozycji Mouse w przestrzeni 3D zobacz Mouse.Hit .
Przykłady kodu
The code below visualizes the difference between Mouse.Hit and Mouse.Origin. In order to do this, the code uses the Vector3 positions of the hit and origin CFrame values using .p.
The difference is that the origin is "where the mouse came from" (its origin) and the hit is the position where the mouse hits (is when the player presses their mouse).
This example also visualizes that the mouse origin is very similar to the position of the CurrentCamera by printing the magnitude (distance) between the two positions.
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
Obiekt w przestrzeni 3D, na który wskazuje mouse, jest wskazany.
Uwaga:
- Jeśli Mouse.TargetFilter został ustawiony, filtr docelowy i jego potomkowie zostaną pominięte.
- Gdy mysz nie wskazuje na BasePart , na przykład gdy wskazuje na niebo, cel będzie nil .
- Programiści szukający pozycji myszy w przestrzeni 3D powinni używać Mouse.Hit.
Przykłady kodu
The following code sample, when placed in StarterPlayerScripts will create a tool in the player's backpack that, once equipped, will change the BasePart.BrickColor of every BasePart the player clicks on.
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
Właściwość ta określa obiekt, który zostanie zignorowany przez mysz podczas obliczania Mouse.Hit i Mouse.Target.Ignorowane są również potomkowie obiektu, więc można ignorować wiele obiektów tak długo, jak są one potomkami obiektu, do którego ta właściwość jest ustawiać.Właściwość ta jest przydatna podczas filtrowania modeli zawierających efekty specjalne lub dekoracje, które nie powinny wpływać na Mouse.Hit lub Mouse.Target.
Właściwość ta może być ustawiona na dowolną Instance lub nil, na przykład:
local Players = game:GetService("Players")local Workspace = game:GetService("Workspace")local player = Players.LocalPlayerlocal mouse = player:GetMouse()mouse.TargetFilter = Workspace.Model
Zauważ, że Character z Players.LocalPlayer jest ignorowany przez mysz automatycznie.
TargetSurface
Właściwość ta wskazuje na Enum.NormalId powierzchnię BasePart, na której wskazuje mysz.Właściwość ta pochodzi z pozycji świata myszy ( Mouse.Hit ) i części, do której wskazuje mysz ( Mouse.Target ).
Właściwość ta nie ma znaczenia, gdy mysz nie wskazuje na część, na przykład gdy mysz wskazuje na niebo.W tej chwili właściwość ta jest ustawiona na "Prawo" w tych przypadkach.Zanim użyjesz tej właściwości, sprawdź, czy cel myszy nie jest nil.
local Players = game:GetService("Players")local player = Players.LocalPlayerlocal mouse = player:GetMouse()-- Sprawdź, czy istnieje część, na którą wskazuje myszif mouse.Target thenprint("The mouse is pointing to the " .. mouse.TargetSurface.Name .. " side of " .. mouse.Target.Name)elseprint("The mouse is not pointing at anything.")end
Przykłady kodu
The code in this sample, when placed in a LocalScript inside StarterPlayerScripts will set the surface of any BasePart clicked on to a random surface.
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
Właściwość UnitRay jest skierowana na pozycję myszy w przestrzeni 3D (opisana przez ).Pochodzi z CFrame z Workspace.CurrentCamera .Podobnie jak wszystkie promienie jednostkowe, ma odległość 1.
local Players = game:GetService("Players")local player = Players.LocalPlayerlocal mouse = player:GetMouse()print(mouse.UnitRay.Direction.Magnitude) -- Always 1
ViewSizeX
Właściwość ViewSizeX opisuje poziomą komponent wielkości okna gry w pikselach.
Przykłady kodu
This code sample shows how you can create a Vector2 representing the Mouse object's position on screen (X() and Y()) and the size of the screen itself (ViewSizeX() and ViewSizeY()). Using these, you can normalize the position of the mouse on-screen such that the top-left just under the topbar maps to (0, 0) and the bottom-right maps to (1, 1). This normalized position is calculated and printed as the mouse moves using the Move() event.
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
Właściwość ViewSizeY opisuje pionową część rozmiaru okna gry w pikselach. Długość ta obejmuje przestrzeń używaną przez pasek górny.
Przykłady kodu
This code sample shows how you can create a Vector2 representing the Mouse object's position on screen (X() and Y()) and the size of the screen itself (ViewSizeX() and ViewSizeY()). Using these, you can normalize the position of the mouse on-screen such that the top-left just under the topbar maps to (0, 0) and the bottom-right maps to (1, 1). This normalized position is calculated and printed as the mouse moves using the Move() event.
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)
Podczas wykrywania zmian w pozycji myszy na ekranie zaleca się użycie ContextActionService:BindAction() z Enum.UserInputType.MouseMovement lub UserInputService.InputChanged, które oba opisują pozycję myszy za pomocą Position (a Vector3) z InputObject, zamiast używać tego i powiązanych właściwości.
Właściwość X opisuje poziomy składnik pozycji myszy na ekranie.Pozycja jest mierzona w pikselach względem lewego górnego rogu, pod paskiem górnym.Właściwość ta może być używana w połączeniu z Mouse.Y, aby wyprodukować Vector2 reprezentujący pozycję myszy:
local position = Vector2.new(mouse.X, mouse.Y)
Właściwość ta nie wystrzeliwuje Changed lub sygnału zwrotnego z GetPropertyChangedSignal. Zamiast tego użyj wydarzenia Mouse.Move.
Przykłady kodu
This code sample shows how you can create a Vector2 representing the Mouse object's position on screen (X() and Y()) and the size of the screen itself (ViewSizeX() and ViewSizeY()). Using these, you can normalize the position of the mouse on-screen such that the top-left just under the topbar maps to (0, 0) and the bottom-right maps to (1, 1). This normalized position is calculated and printed as the mouse moves using the Move() event.
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)
Podczas wykrywania zmian w pozycji myszy na ekranie zaleca się użycie ContextActionService:BindAction() z Enum.UserInputType.MouseMovement lub UserInputService.InputChanged, które oba opisują pozycję myszy za pomocą Position (a Vector3) z InputObject, zamiast używać tego i powiązanych właściwości.
Właściwość Y opisuje poziomy składnik pozycji myszy na ekranie.Pozycja jest mierzona w pikselach względem lewego górnego rogu, pod paskiem górnym.Właściwość ta może być używana w połączeniu z Mouse.X, aby wyprodukować Vector2 reprezentujący pozycję myszy:
local position = Vector2.new(mouse.X, mouse.Y)
Właściwość ta nie wystrzeliwuje Changed lub sygnału zwrotnego z GetPropertyChangedSignal. Zamiast tego użyj wydarzenia Mouse.Move.
Przykłady kodu
This code sample shows how you can create a Vector2 representing the Mouse object's position on screen (X() and Y()) and the size of the screen itself (ViewSizeX() and ViewSizeY()). Using these, you can normalize the position of the mouse on-screen such that the top-left just under the topbar maps to (0, 0) and the bottom-right maps to (1, 1). This normalized position is calculated and printed as the mouse moves using the Move() event.
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)
Metody
Zdarzenia
Button1Down
To wydarzenie wystrzeliwuje, gdy gracz naciśnie lewy przycisk myszy.Zauważ, że można do niego uzyskać z Tool ; na przykład, gdy umieszczony jest w LocalScript , kod poniżej drukuje Button1Down za każdym razem, gdy naciśnięty zostanie lewy przycisk myszy.
local tool = script.Parent -- Upewnij się, że jest to obiekt narzędzia
tool.Equipped:Connect(function(mouse)
mouse.Button1Down:Connect(function()
print("Button1Down")
end)
end)
Możesz dowiedzieć się o pozycji myszy w przestrzeni świata i czy wskazuje na jakikolwiek BasePart używając właściwości Hit i Target.
Button1Up
To wydarzenie wystrzeliwuje, gdy gracz uwalnia lewy przycisk myszy.Zauważ, że można do niego uzyskać z Tool ; na przykład, gdy umieszczony jest w LocalScript , kod poniżej drukuje Button1Up za każdym razem, gdy wypuszczony zostanie lewy przycisk myszy.
local tool = script.Parent -- Upewnij się, że jest to obiekt narzędzia
tool.Equipped:Connect(function(mouse)
mouse.Button1Up:Connect(function()
print("Button1Up")
end)
end)
Możesz dowiedzieć się o pozycji myszy w przestrzeni świata i czy wskazuje na jakikolwiek BasePart używając właściwości Hit i Target.
Button2Down
To wydarzenie wystrzeliwuje się, gdy gracz naciśnie prawy przycisk myszy.Zauważ, że można do niego uzyskać z Tool ; na przykład, gdy umieszczony jest w LocalScript , kod poniżej drukuje Button2Down za każdym razem, gdy naciśnięty zostanie prawy przycisk myszy.
local tool = script.Parent -- Upewnij się, że jest to obiekt narzędzia
tool.Equipped:Connect(function(mouse)
mouse.Button2Down:Connect(function()
print("Button2Down")
end)
end)
Możesz dowiedzieć się o pozycji myszy w przestrzeni świata i czy wskazuje na jakikolwiek BasePart używając właściwości Hit i Target.
Button2Up
To wydarzenie wystrzeliwuje się, gdy gracz uwalnia prawy przycisk myszy.Zauważ, że można do niego uzyskać z Tool ; na przykład, gdy umieszczony jest w LocalScript , kod poniżej drukuje Button2Up za każdym razem, gdy wypuszczony zostanie prawy przycisk myszy.
local tool = script.Parent -- Upewnij się, że jest to obiekt narzędzia
tool.Equipped:Connect(function(mouse)
mouse.Button2Up:Connect(function()
print("Button2Up")
end)
end)
Możesz dowiedzieć się o pozycji myszy w przestrzeni świata i czy wskazuje na jakikolwiek BasePart używając właściwości Hit i Target.
Idle
Wystrzelany podczas każdego bicia serca, gdy mysz nie jest przekazywana do innego wydarzenia myszy.
Uwaga: to wydarzenie nie powinno być używane do określenia, kiedy mysz jest nieruchoma. Jak wysyła każde bicie serca, będzie wysyłane między Mouse.Move wydarzeniami.
Aby uzyskać informacje o tym, jak uzyskać obiekt Mouse, zobacz stronę Mouse.
Programiści mogą dowiedzieć się o pozycji myszy w przestrzeni świata, a jeśli wskazuje na jakikolwiek BasePart używając właściwości Mouse.Hit i Mouse.Target.
Zaleca się programistom używanie UserInputService zamiast obiektu Mouse w nowej pracy.
Przykłady kodu
This example demonstrates how mouse events are passed during each frame
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
Wystrzeliwany, gdy mysz jest przesuwana.
Uwaga, to wydarzenie jest uruchamiane, gdy aktualizowana jest pozycja myszy, dlatego będzie strzelać wielokrotnie podczas przesuwania.
Aby uzyskać informacje o tym, jak uzyskać obiekt Mouse, zobacz stronę Mouse.
Programiści mogą dowiedzieć się o pozycji myszy w przestrzeni świata, a jeśli wskazuje na jakikolwiek BasePart używając właściwości Mouse.Hit i Mouse.Target.
mouse.Move:Connect(function()
local position = mouse.Hit.p
local target = mouse.Target
print(target, position)
end)
Zaleca się programistom używanie UserInputService zamiast obiektu Mouse w nowej pracy.
Przykłady kodu
The example below allows the local player to move parts with their mouse.
When the player presses their left mouse button over a part, that part is the mouse's target and becomes the point. Until the player releases their left mouse button, that part will move to the mouse's world position when the player moves their mouse.
Note that the Mouse.TargetFilter property allows the code to ignore the part being moved when determining the mouse's world position.
The code should work as expected when placed in a LocalScript.
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
Wydarzenie WheelBackward wystrzeliwuje się, gdy koło myszy jest przewijane wstecz.Możliwe zastosowania dla tego wydarzenia obejmują przełączanie celownika broni w pierwszej osobie strzelca (strzelanki FPS) lub powiększanie kamery gracza.
Można go używać obok wydarzenia przewijania w przód, Mouse.WheelForward .
Aby uzyskać informacje o tym, jak uzyskać obiekt Mouse, zobacz stronę Mouse.
Zaleca się programistom używanie UserInputService zamiast obiektu Mouse w nowej pracy.
Przykłady kodu
The below example assumes that you have already got the player's mouse (and set it as a variable named 'mouse'), whether by use of a Tool, HopperBin or the Player:GetMouse() method. It will print "Wheel went backwards!" when the player scrolls backwards.
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
Wydarzenie WheelForward wystrzeliwuje się, gdy koło myszy jest przewijane do przodu.Możliwe zastosowania dla tego wydarzenia obejmują przełączanie celownika broni w pierwszej osobie strzelca (strzelanki FPS) lub powiększanie kamery gracza.
Można go używać obok wydarzenia przewijania wstecz, Mouse.WheelBackward .
Aby uzyskać informacje o tym, jak uzyskać obiekt Mouse, zobacz stronę Mouse.
Zaleca się programistom używanie UserInputService zamiast obiektu Mouse w nowej pracy.
Przykłady kodu
The below example assumes that you have already got the player's mouse (and set it as a variable named 'mouse'), whether by use of a Tool, HopperBin or the Player:GetMouse() method. It will print "Wheel went forward!" when the player scrolls forwards.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local function onWheelBackward()
print("Wheel went forward!")
end
mouse.WheelForward:Connect(onWheelBackward)