Mouse

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar

Maus wurde durch UserInputService und ContextActionService ersetzt, die ein breiteres Spektrum abdecken, mehr Funktionen unterstützen und Cross-Plattform-Muster besser unterstützen.Es bleibt aufgrund seiner weitreichenden Verwendung unterstützt, aber du solltest stark in Betracht ziehen, diese Alternativen zu verwenden.

Das Maus -Objekt beherbergt verschiedene API für Zeiger, vor allem für Schaltflächen und Raycasting.Es kann über Player:GetMouse() aufgerufen werden, die auf der Players.LocalPlayer in einem LocalScript angerufen wird.Es wird auch vom Ereignis Tool.Equipped übergeben.


-- Aus einem LocalScript:
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
-- Mausicon einstellen
mouse.Icon = "rbxasset://SystemCursors/Wait"

Hinweis:

  • Dieses Objekt steuert/beschränkt keine Pointer-Bewegung. Dazu siehe UserInputService.MouseBehavior und UserInputService.MouseDeltaSensitivity .

  • Wenn zwei Funktionen mit demselben Eingabeereignis verbunden sind, wie , laufen beide Funktionen, wenn das Ereignis ausgelöst wird.Es gibt kein Konzept von sinkender/durchgehender Eingabe, da Ereignisse dieses Verhalten nicht unterstützen.Allerdings hat ContextActionService dieses Verhalten durch BindAction .

  • Während eine Maus auf allen Plattformen möglicherweise nicht verfügbar ist, funktioniert Mouse weiterhin auf mobilen (Touch-) und Konsolen-Geräten (Gamepad), die in der Regel keine Mäuse oder Mauszeiger-Hardware haben.Für explizite Cross-Plattform-Verhaltensweisen verwenden Sie UserInputService und ContextActionService.

    Siehe Eingabe und Kamera für weitere Informationen zur Anpassung von Eingaben in deiner Erfahrung.

Zusammenfassung

Eigenschaften

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Die CFrame des Position der Maus im 3D-Raum.

  • Icon:ContentId
    Parallel lesen

    Die Inhalts-ID des Bildes, das als Mouse -Symbol verwendet wird.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Ein CFrame , das sich am Workspace.CurrentCamera und auf die 3D-Position der Maus ausrichtet.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Das Objekt in 3D-Raum, auf das mouse zeigt.

  • Parallel lesen

    Bestimmt, dass ein Objekt (und seine Nachkommen) bei der Bestimmung von Mouse.Hit und Mouse.Target ignoriert werden.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Weist auf die Enum.NormalId der BasePart Oberfläche hin, auf der die Maus zeigt.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Ein Ray auf die Weltposition der Maus ausgerichtetes, von der Workspace.CurrentCamera Weltposition ausgehendes.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt die Breite des Spielfensters in Pixeln.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt die Höhe des Spielfensters in Pixeln.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt die X-Komponente der Position der Maus auf dem Bildschirm.

  • Schreibgeschützt
    Nicht repliziert
    Parallel lesen

    Beschreibt die Y-Komponente der Bildschirmposition der Maus.

Ereignisse

Eigenschaften

Schreibgeschützt
Nicht repliziert
Parallel lesen

Diese Eigenschaft gibt die CFrame Position der Maus im 3D-Raum an. Beachten Sie, dass Mouse.TargetFilter und seine Nachkommen ignoriert werden.

Entwickler können die Position von Hit wie folgt erhalten:


local position = mouse.Hit.Position

Hit wird oft von Tools verwendet, um eine Waffe in die Richtung der Maus in der dritten Person zu feuern.

Entwickler, die nach dem BasePart die Maus zeigt, sollten Mouse.Target verwenden.

Wie wird Mouse.Hit berechnet?

Die Position des Treffer-CFrames wird als Punkt der Intersektion zwischen der internen Maus von Ray (einer erweiterten Version von Mouse.UnitRay) und einem Objekt in 3D-Raum berechnet (z. B. ein Teil).

Die Ausrichtung des Treffer-CFrames entspricht der Richtung des Mouse.UnitRay .


local unitRayDirection = mouse.UnitRay.Direction
local mouseHitDirection = mouse.Hit.lookVector
-- unitRayDirection ≈ mouseHitDirection
-- the vectors are approximately equal

Beachten Sie, dass die Rolle des Workspace.CurrentCamera beim Berechnen der Orientierung des Treffers CFrame nicht verwendet wird.

Der interne Strahl der Maus erstreckt sich für 1.000 Stollen.Wenn die Maus nicht auf ein Objekt im 3D-Raum zeigt (z. B. wenn sie auf den Himmel zeigt), ist diese Eigenschaft 1.000 Klötze von der Workspace.CurrentCamera entfernt.

Code-Beispiele

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.

Mouse.Hit Laser Beam

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.

Mouse Origin vs Mouse Hit vs CurrentCamera Position

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

ContentId
Parallel lesen

Symbol ist ein Eigenschaft, die das Bild bestimmt, das als Zeiger verwendet wird.Wenn leer, wird ein Standardpfeil verwendet.Während der Cursor über einem GuiButton schwebt, wird diese Eigenschaft vorübergehend ignoriert.

Um den Cursor vollständig auszublenden, benutze keine transparente Bild – stattdessen setze auf false.

Um das Benutzer-Maussymbol in Erlebnissen zu erhalten/zu setzen, solltest du UserInputService.MouseIcon verwenden.Mouse.Icon wird nach der Veröffentlichung der neuen API für Plugins zum Festlegen der Mauszeiger deprecated werden.

Entwerfen eines Cursors

Die folgenden Richtlinien können nützlich sein, wenn du deine eigenen Mauszeiger erstellst:

  • Die Dimensionen des verwendeten Bildes bestimmen die Größe des Cursors.
  • Die Dimensionen des Bildes sollten nicht mehr als 256 Pixel auf einer Achse überschreiten.
  • Das Zentrum des Bildes ist der Ort, an dem Maus-Eingaben ausgegeben werden.
  • Das Standard-Mausbild hat 64x64 Pixel, wobei die Maus 17x24 Pixel Platz einnimmt.
System-Cursor

Wenn Sie eine PluginMouse verwenden, die aus Plugin:GetMouse() abgerufen wurde, können Sie die folgenden Ikonen verwenden, die ähnlich sind wie die Standardcursor Ihres Systems, wie Hände, Pfeile, I-Träger usw.Du kannst diese mit GUI-Ereignissen wie MouseEnter, MouseLeave und MouseButton1Down verwenden, um ein konsistentes Studio-Erlebnis zu bieten, wenn du mit bestimmten Arten von GUI-Komponenten interagierst.Beachten Sie, dass diese nur für Studio-Plugins funktionieren; sie werden für andere Mouse Objekte nicht funktionieren.


<th>Asset</th>
<th>Vorgeschlagene Verwendung</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>Standardklicken und Auswahl.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-PointingHand.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/PointingHand</code></td><td>Über einem aktiven Link/Button schweben.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-OpenHand.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/OpenHand</code></td><td>Über einem ziehbares Element schweben.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-GrabbingHand.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/ClosedHand</code></td><td>Das Ziehen eines Elements.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-IBeam.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/IBeam</code></td><td>Über dem Textfeld schweben.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-ResizeNS.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/SizeNS</code></td><td>Über einem vertikalen Größengriff schweben.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-ResizeEW.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/SizeEW</code></td><td>Über einem horizontalen Größenveränderungsgriff schweben.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-ResizeNESW.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/SizeNESW</code></td><td>Über einem Eckengriff verschieben.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-ResizeNWSE.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/SizeNWSE</code></td><td>Über einem Eckengriff verschieben.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-ResizeAll.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/SizeAll</code></td><td>Über einem mehrdimensionalen Größenveränderungsgriff schweben.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-ResizeSplitV.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/SplitNS</code></td><td>Über einem vertikalen "Teilen"-Griff schweben.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-ResizeSplitH.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/SplitEW</code></td><td>Über einem horizontalen "Teilung"-Griff schweben.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-Forbidden.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/Forbidden</code></td><td>Über einem gesperrten/verbotenen Element schweben.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-Wait.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/Wait</code></td><td>Angabe einer Aktion im Gange anzeigen.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-Busy.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/Busy</code></td><td>Indiziert, dass das System beschäftigt ist.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-Crosshair.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/Cross</code></td><td>Über einem Punktauswahlbereich schweben.</td>
</tr>
</tbody>
Schau*
\* Diese Darstellungen sind Annäherungen - der tatsächliche Look hängt von Ihrem Betriebssystem ab.

Code-Beispiele

This example changes the Players.LocalPlayer mouse icon to look like a dragon image.

Dragon Mouse Icon

local Players = game:GetService("Players")
local mouse = Players.LocalPlayer:GetMouse()
mouse.Icon = "http://www.roblox.com/asset?id=163023520"

Origin

Schreibgeschützt
Nicht repliziert
Parallel lesen

Die Eigenschaft Herkunft zeigt an, wo die Mausherkunft herkommt.Es wird an der Workspace.CurrentCamera positioniert und ist auf die 3D-Position der Maus ausgerichtet.

Mouse.UnitRay beginnt an derselben Stelle wie Origin und erstreckt sich für einen Stollen in derselben Richtung.


local unitRay = mouse.UnitRay
local origin = mouse.Origin
-- unitRay.Direction = Ursprung.p
-- unitRay.Direction ≈ origin.lookVector

Für die Position des Mouse im 3D-Raum siehe Mouse.Hit .

Code-Beispiele

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.

Mouse Origin vs Mouse Hit vs CurrentCamera Position

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

Schreibgeschützt
Nicht repliziert
Parallel lesen

Das Objekt in 3D-Raum, auf das mouse zeigt.

Hinweis:

  • Wenn Mouse.TargetFilter festgelegt wurde, werden der Zielfilter und seine Nachkommen ignoriert.
  • Wenn die Maus nicht auf einen BasePart zeigt, zum Beispiel wenn sie auf den Himmel zeigt, ist das Ziel nil .
  • Entwickler, die die Position der Maus im 3D-Raum suchen, sollten Mouse.Hit verwenden.

Code-Beispiele

Das folgende Codebeispiel, wenn es in StarterPlayerScripts platziert wird, erstellt ein Werkzeug im Rucksack des Spielers, das, sobald es ausgerüstet ist, die BasePart.BrickColor von jedem BasePart, auf das der Spieler klickt, ändert.

Farbzufalls-Werkzeug

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

Parallel lesen

Diese Eigenschaft legt fest, dass ein Objekt von der Maus ignoriert wird, wenn Mouse.Hit und Mouse.Target berechnet werden.Auch die Nachkommen des Objekts werden ignoriert, so dass es möglich ist, mehrere Objekte zu ignorieren, solange sie ein Nachkomme des Objekts sind, auf das diese Eigenschaft gesetzt ist.Diese Eigenschaft ist nützlich, wenn Modelle mit speziellen Effekten oder Dekorationen gefiltert werden, die nicht Mouse.Hit oder Mouse.Target beeinflussen sollen.

Dieses Eigenschaft kann auf jede Instance oder nil festgelegt werden, zum Beispiel:


local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
mouse.TargetFilter = Workspace.Model

Beachten Sie, dass das Character des Players.LocalPlayer automatisch von der Maus ignoriert wird.

TargetSurface

Schreibgeschützt
Nicht repliziert
Parallel lesen

Diese Eigenschaft zeigt die Enum.NormalId der BasePart Oberfläche an, auf der die Maus zeigt.Diese Eigenschaft wird aus der Weltposition der Maus ( Mouse.Hit ) und dem Teil abgeleitet, auf das die Maus zeigt ( Mouse.Target ).

Diese Eigenschaft ist nicht sinnvoll, wenn die Maus nicht auf ein Teil zeigt, zum Beispiel wenn die Maus auf den Himmel zeigt.Im Moment ist diese Eigenschaft auf 'Rechts' unter diesen Umständen eingestellt.Bevor du diese Eigenschaft verwendest, überprüfe, dass das Ziel der Maus nicht nil ist.


local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
-- Überprüfen Sie, ob es ein Teil gibt, auf das die Maus zeigt
if mouse.Target then
print("The mouse is pointing to the " .. mouse.TargetSurface.Name .. " side of " .. mouse.Target.Name)
else
print("The mouse is not pointing at anything.")
end

Code-Beispiele

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.

Surface Randomizer

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

Schreibgeschützt
Nicht repliziert
Parallel lesen

Die UnitRay-Eigenschaft ist eine Ray gerichtete Richtung auf die Position der Maus im 3D-Raum (beschrieben durch Mouse.Hit ).Es stammt vom CFrame des Workspace.CurrentCamera.Wie alle Einheitsstrahlen hat es eine Entfernung von 1.


local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
print(mouse.UnitRay.Direction.Magnitude) -- Always 1

ViewSizeX

Schreibgeschützt
Nicht repliziert
Parallel lesen

Die Eigenschaft ViewSizeX beschreibt die horizontale Größe des Spielfenstergriffs in Pixeln.

Code-Beispiele

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.

Normalized Mouse Position

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

Schreibgeschützt
Nicht repliziert
Parallel lesen

Die Eigenschaft ViewSizeY beschreibt die vertikale Komponente der Größe des Spielfensters in Pixeln. Diese Länge enthält den Raum, den die oberste Leiste benutzt.

Code-Beispiele

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.

Normalized Mouse Position

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)
Schreibgeschützt
Nicht repliziert
Parallel lesen

Wenn Änderungen in der Position der Maus auf dem Bildschirm erkannt werden, wird empfohlen, ContextActionService:BindAction() mit Enum.UserInputType.MouseMovement oder UserInputService.InputChanged zu verwenden, die beide die Position der Maus mit dem Position (einem Vector3 ) eines InputObject beschreiben, anstatt diese und verwandte Eigenschaften zu verwenden.

Die X-Eigenschaft beschreibt die horizontale Komponente der Mausposition auf dem Bildschirm.Die Position wird in Pixeln in Bezug auf die obere linke Ecke gemessen, unter der oberen Leiste.Diese Eigenschaft kann in Verbindung mit Mouse.Y verwendet werden, um eine Vector2 zu erzeugen, die die Position der Maus darstellt:


local position = Vector2.new(mouse.X, mouse.Y)

Diese Eigenschaft feuert nicht Changed oder das Signal, das von GetPropertyChangedSignal zurückgegeben wird, ab. Verwende stattdessen das Mouse.Move -Ereignis.

Code-Beispiele

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.

Normalized Mouse Position

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)
Schreibgeschützt
Nicht repliziert
Parallel lesen

Wenn Änderungen in der Position der Maus auf dem Bildschirm erkannt werden, wird empfohlen, ContextActionService:BindAction() mit Enum.UserInputType.MouseMovement oder UserInputService.InputChanged zu verwenden, die beide die Position der Maus mit dem Position (einem Vector3 ) eines InputObject beschreiben, anstatt diese und verwandte Eigenschaften zu verwenden.

Die Eigenschaft Y beschreibt die vertikale Komponente der Position der Maus auf dem Bildschirm.Die Position wird in Pixeln in Bezug auf die obere linke Ecke gemessen, unter der oberen Leiste.Diese Eigenschaft kann in Verbindung mit Mouse.X verwendet werden, um eine Vector2 zu erzeugen, die die Position der Maus darstellt:


local position = Vector2.new(mouse.X, mouse.Y)

Diese Eigenschaft feuert nicht Changed oder das Signal, das von GetPropertyChangedSignal zurückgegeben wird, ab. Verwende stattdessen das Mouse.Move -Ereignis.

Code-Beispiele

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.

Normalized Mouse Position

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)

Methoden

Ereignisse

Button1Down

Dieses Ereignis wird ausgelöst, wenn der Spieler seine linke Maustaste drückt.Beachten Sie, dass dies von einer Tool aus zugänglich ist; zum Beispiel, wenn es in einem LocalScript platziert wird, druckt der folgende Code Button1Down immer, wenn die linke Maustaste gedrückt wird.


local tool = script.Parent -- Stellen Sie sicher, dass es sich um ein Werkzeugobjekt handelt
tool.Equipped:Connect(function(mouse)
mouse.Button1Down:Connect(function()
print("Button1Down")
end)
end)

Du kannst die Position der Maus im Weltraum finden und feststellen, ob sie auf irgendeine BasePart oder Hit Eigenschaft zeigt, indem du die Target und Eigenschaften verwendest.


Button1Up

Dieses Ereignis wird ausgelöst, wenn der Spieler seine linke Maustaste loslässt.Beachten Sie, dass dies von einer Tool ; zum Beispiel, wenn es in einem LocalScript platziert wird, druckt der folgende Code Button1Up immer, wenn die linke Maustaste freigelassen wird.


local tool = script.Parent -- Stellen Sie sicher, dass es sich um ein Werkzeugobjekt handelt
tool.Equipped:Connect(function(mouse)
mouse.Button1Up:Connect(function()
print("Button1Up")
end)
end)

Du kannst die Position der Maus im Weltraum finden und feststellen, ob sie auf irgendeine BasePart oder Hit Eigenschaft zeigt, indem du die Target und Eigenschaften verwendest.


Button2Down

Dieses Ereignis wird ausgelöst, wenn der Spieler die rechte Maustaste drückt.Beachten Sie, dass dies von einer Tool ; zum Beispiel, wenn es in einem LocalScript platziert wird, druckt der folgende Code Button2Down immer, wenn die rechte Maustaste gedrückt wird.


local tool = script.Parent -- Stellen Sie sicher, dass es sich um ein Werkzeugobjekt handelt
tool.Equipped:Connect(function(mouse)
mouse.Button2Down:Connect(function()
print("Button2Down")
end)
end)

Du kannst die Position der Maus im Weltraum finden und feststellen, ob sie auf irgendeine BasePart oder Hit Eigenschaft zeigt, indem du die Target und Eigenschaften verwendest.


Button2Up

Dieses Ereignis wird ausgelöst, wenn der Spieler seine rechte Maustaste loslässt.Beachten Sie, dass dies von einer Tool ; zum Beispiel, wenn es in einem LocalScript platziert wird, druckt der folgende Code Button2Up immer, wenn die rechte Maustaste freigelassen wird.


local tool = script.Parent -- Stellen Sie sicher, dass es sich um ein Werkzeugobjekt handelt
tool.Equipped:Connect(function(mouse)
mouse.Button2Up:Connect(function()
print("Button2Up")
end)
end)

Du kannst die Position der Maus im Weltraum finden und feststellen, ob sie auf irgendeine BasePart oder Hit Eigenschaft zeigt, indem du die Target und Eigenschaften verwendest.


Idle

Feuert während jedes Herzschlags ab, bei dem die Maus nicht an ein anderes Mausereignis weitergegeben wird.

Beachten Sie, dass dieses Ereignis nicht verwendet werden sollte, um zu bestimmen, wann die Maus stillsteht. Wenn es jedes Herzschlag abfeuert, wird es zwischen Mouse.Move Ereignissen abgefeuert.

Für Informationen darüber, wie Sie das Mouse Objekt erhalten, sehen Sie bitte die Mouse Seite.

Entwickler können die Position der Maus im Weltraum finden, und wenn sie auf irgendeine BasePart zeigt, verwenden sie die Eigenschaften Mouse.Hit und Mouse.Target.

Beachten Sie, dass Entwickler empfohlen werden, UserInputService anstelle des Mouse Objekts in neuer Arbeit zu verwenden.


Code-Beispiele

Dieses Beispiel zeigt, wie Mausereignisse während jedes Frames übermittelt werden

Maus.Idle

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

Feuert, wenn die Maus bewegt wird.

Beachten Sie, dass dieses Ereignis ausgelöst wird, wenn die Position der Maus aktualisiert wird, daher wird es wiederholt feuern, während es sich bewegt.

Für Informationen darüber, wie Sie das Mouse Objekt erhalten, sehen Sie bitte die Mouse Seite.

Entwickler können die Position der Maus im Weltraum finden, und wenn sie auf irgendeine BasePart zeigt, verwenden sie die Eigenschaften Mouse.Hit und Mouse.Target.


mouse.Move:Connect(function()
local position = mouse.Hit.p
local target = mouse.Target
print(target, position)
end)

Beachten Sie, dass Entwickler empfohlen werden, UserInputService anstelle des Mouse Objekts in neuer Arbeit zu verwenden.


Code-Beispiele

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.

Move Parts with the Mouse

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

Das WheelBackward-Ereignis wird ausgelöst, wenn das Mausrad rückwärts scrollt.Mögliche Verwendungen für dieses Ereignis umfassen das Umschalten des Zielfernrohrs in einem First-Person-Shooter (FPS) oder das Zoomen der Kamera des Spielers.

Dies kann neben dem Scroll-Vor-Ereignis verwendet werden, Mouse.WheelForward .

Für Informationen darüber, wie Sie das Mouse Objekt erhalten, sehen Sie bitte die Mouse Seite.

Beachten Sie, dass Entwickler empfohlen werden, UserInputService anstelle des Mouse Objekts in neuer Arbeit zu verwenden.


Code-Beispiele

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.

Mouse.WheelBackward

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

Das WheelForward-Ereignis wird ausgelöst, wenn das Mausrad nach vorne geschoben wird.Mögliche Verwendungen für dieses Ereignis umfassen das Umschalten des Zielfernrohrs in einem First-Person-Shooter (FPS) oder das Zoomen der Kamera des Spielers.

Dies kann neben dem scrollenden Rückwärtsereignis verwendet werden, Mouse.WheelBackward .

Für Informationen darüber, wie Sie das Mouse Objekt erhalten, sehen Sie bitte die Mouse Seite.

Beachten Sie, dass Entwickler empfohlen werden, UserInputService anstelle des Mouse Objekts in neuer Arbeit zu verwenden.


Code-Beispiele

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.

Mouse.WheelForward

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)