Mouse
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
Souris a été remplacée par UserInputService et ContextActionService, qui couvrent une plus grande portée, sont plus riches en fonctionnalités et supportent mieux les modèles cross-plateforme .Il reste soutenu en raison de son large usage, mais vous devriez envisager fortement d'utiliser ces alternatives.
L'objet souris héberge diverses API pour les pointeurs, principalement pour les boutons et le lancer de rayons.Il peut être accessible via Player:GetMouse() appelé sur le Players.LocalPlayer dans un LocalScript .Il est également transmis par l'événement Tool.Equipped.
- Il est le plus remarquable pour la propriété Icon qui change l'apparence du curseur.
- Il raycaste en permanence la position de la souris de l'écran dans le monde 3D en utilisant la propriété TargetFilter, en stockant les résultats du raycast dans les propriétés Hit, Target et TargetSurface.Ces derniers peuvent être utiles dans des cas simples, mais WorldRoot:Raycast() devraient être utilisés dans des scénarios de lancer de rayons plus complexes.
- Plugins peut utiliser Plugin:GetMouse() pour obtenir un PluginMouse, qui se comporte de manière similaire.
-- D'un script local :local Players = game:GetService("Players")local player = Players.LocalPlayerlocal mouse = player:GetMouse()-- Définir l'icône de la sourismouse.Icon = "rbxasset://SystemCursors/Wait"
Remarque :
Cet objet ne contrôle pas/ne limite pas le mouvement du pointeur. Pour cela, voir UserInputService.MouseBehavior et UserInputService.MouseDeltaSensitivity .
Si deux fonctions sont connectées à un même événement d'entrée, comme , les deux fonctions s'exécuteront lorsque l'événement se déclenchera.Il n'y a pas de concept de coulissement/passage d'entrée, car les événements ne supportent pas ce comportement.Cependant, ContextActionService a ce comportement à travers BindAction .
Bien qu'une souris ne soit peut-être pas disponible sur toutes les plateformes, la souris fonctionnera toujours sur mobile (touch) et sur console (manette), qui n'ont généralement pas de souris ou de pointeur matériel.Pour les comportements interplateformes explicites, utilisez UserInputService et ContextActionService.
Voir entrée et caméra pour plus d'informations sur la personnalisation des entrées dans votre expérience.
Résumé
Propriétés
La CFrame de la position de la souris dans l'espace 3D.
L'ID du contenu de l'image utilisée comme icône Mouse.
A CFrame positionné à la Workspace.CurrentCamera et orienté vers la position 3D de la souris.
L'objet dans l'espace 3D auquel le mouse pointe.
Détermine qu'un objet (et ses descendants) soit ignoré lors de la détermination de Mouse.Hit et de Mouse.Target .
Indique la Enum.NormalId de la surface BasePart à laquelle la souris pointe.
Un Ray dirigé vers la position du monde de la souris, originaire de la position du monde Workspace.CurrentCamera.
Décrit la largeur de la fenêtre du jeu en pixels.
Décrit la hauteur de la fenêtre du jeu en pixels.
Décrit la composante X (horizontale) de la position de la souris sur l'écran.
Décrit la composante Y (verticale) de la position de l'écran de la souris.
Évènements
S'allume lorsque le bouton de souris gauche est pressé.
S'allume lorsque le bouton de souris gauche est relâché.
Se déclenche lorsque le bouton droit de la souris est pressé.
Tiré lorsque le bouton droit de la souris est libéré.
Tiré à chaque battement de cœur auquel la souris n'est pas transmise à un autre événement de souris.
Tiré lorsque la souris est déplacée.
S'enflamme lorsque la molette de la souris est déplacée vers l'arrière.
Se déclenche lorsque la molette de la souris est déplacée vers l'avant.
Propriétés
Hit
Cette propriété indique CFrame de la position de la souris dans l'espace 3D. Notez que Mouse.TargetFilter et ses descendants seront ignorés.
Les développeurs peuvent obtenir la position de Hit comme ceci :
local position = mouse.Hit.Position
Hit est souvent utilisé par Tools pour tirer une arme vers la souris en troisième personne.
Les développeurs qui recherchent le BasePart la souris pointe sur devraient utiliser Mouse.Target .
Comment est-ce que Mouse.Hit est calculé ?
La position du cadre de frappe est calculée comme le point d'intersection entre le point interne de la souris Ray (une version étendue de Mouse.UnitRay) et un objet dans l'espace 3D (comme une partie).
L'orientation du cadre de frappe correspond à la direction du Mouse.UnitRay.
local unitRayDirection = mouse.UnitRay.Directionlocal mouseHitDirection = mouse.Hit.lookVector-- unitRayDirection ≈ mouseHitDirection-- the vectors are approximately equal
Remarque, le roulement du Workspace.CurrentCamera n'est pas utilisé lors du calcul de l'orientation du coup CFrame .
Le rayon interne de la souris s'étend sur 1 000 studs.Si la souris ne pointe pas vers un objet dans l'espace 3D (par exemple lorsqu'elle pointe vers le ciel), cette propriété sera à 1 000 unités de distance du Workspace.CurrentCamera .
Échantillons de code
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
L'icône est une propriété qui détermine l'image utilisée comme pointeur.Si vide, une flèche par défaut est utilisée.Pendant que le curseur passe sur un GuiButton, cette propriété est temporairement ignorée.
Pour masquer entièrement le curseur, ne pas utiliser une image transparente - au lieu de cela, définissez UserInputService.MouseIconEnabled sur false.
Pour obtenir/définir l'icône de la souris de l'utilisateur dans les expériences, vous devez utiliser UserInputService.MouseIcon .Mouse.Icon sera obsolète après la sortie de la nouvelle API pour les plugins qui définira le curseur de la souris.
Concevoir un curseur
Les directives suivantes peuvent s'avérer utiles lors de la création de vos propres curseurs de souris :
- Les dimensions de l'image utilisée déterminent la taille du curseur.
- Les dimensions de l'image ne doivent pas dépasser 256 pixels sur n'importe quel axe.
- Le centre de l'image est où les entrées de la souris sont émises.
- L'image par défaut de la souris est de 64x64 pixels, avec la souris prenant 17x24 pixels d'espace.
Curseurs système
Lors de l'utilisation d'une PluginMouse récupérée à partir de Plugin:GetMouse(), vous pouvez utiliser les icônes suivantes similaires aux curseurs par défaut de votre système, telles que les mains, les flèches, les poutres, etc.Vous pouvez les utiliser avec des événements GUI comme MouseEnter , MouseLeave , et MouseButton1Down pour fournir une expérience Studio cohérente lors de l'interaction avec certains types de composants GUI.Notez que cela ne fonctionne que pour les plugins de Studio ; ils ne fonctionneront pas pour d'autres objets Mouse.
<th>Actif</th><th>Utilisation suggérée</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>Clic et sélection par défaut.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-PointingHand.png" width="30"></img></td><td><code>rbxasset://SystemCursors/PointingHand</code></td><td>Survolez un lien/bouton actif.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-OpenHand.png" width="30"></img></td><td><code>rbxasset://SystemCursors/OpenHand</code></td><td>Survolez un élément glissable.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-GrabbingHand.png" width="30"></img></td><td><code>rbxasset://SystemCursors/ClosedHand</code></td><td>Faire glisser un élément.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-IBeam.png" width="30"></img></td><td><code>rbxasset://SystemCursors/IBeam</code></td><td>Survolement dans un champ de texte.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-ResizeNS.png" width="30"></img></td><td><code>rbxasset://SystemCursors/SizeNS</code></td><td>Survolez une poignée de redimensionnement verticale.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-ResizeEW.png" width="30"></img></td><td><code>rbxasset://SystemCursors/SizeEW</code></td><td>Passez la souris sur une poignée de redimensionnement horizontale.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-ResizeNESW.png" width="30"></img></td><td><code>rbxasset://SystemCursors/SizeNESW</code></td><td>Survolez une poignée de redimensionnement d'un coin.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-ResizeNWSE.png" width="30"></img></td><td><code>rbxasset://SystemCursors/SizeNWSE</code></td><td>Survolez une poignée de redimensionnement d'un coin.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-ResizeAll.png" width="30"></img></td><td><code>rbxasset://SystemCursors/SizeAll</code></td><td>Passez la souris sur une poignée de redimensionnement multidirectionnel.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-ResizeSplitV.png" width="30"></img></td><td><code>rbxasset://SystemCursors/SplitNS</code></td><td>Survolez une poignée verticale "diviser" .</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-ResizeSplitH.png" width="30"></img></td><td><code>rbxasset://SystemCursors/SplitEW</code></td><td>Survolez une poignée horizontale "division".</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-Forbidden.png" width="30"></img></td><td><code>rbxasset://SystemCursors/Forbidden</code></td><td>Survolement d'un élément verrouillé/interdit.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-Wait.png" width="30"></img></td><td><code>rbxasset://SystemCursors/Wait</code></td><td>Indiquer qu'une action est en cours.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-Busy.png" width="30"></img></td><td><code>rbxasset://SystemCursors/Busy</code></td><td>Indiquant que le système est occupé.</td></tr><tr><td><img src="../../../assets/misc/Mouse-Icon-Crosshair.png" width="30"></img></td><td><code>rbxasset://SystemCursors/Cross</code></td><td>Survolement d'une zone de sélection précise.</td></tr></tbody>
Regarde* |
---|
Échantillons de code
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
La propriété d'origine indique l'endroit d'où la souris a été originaire.Il est positionné à la Workspace.CurrentCamera et orienté vers la position 3D de la souris.
Mouse.UnitRay commence à la même position que l'origine et se prolonge d'un pas dans la même direction.
local unitRay = mouse.UnitRaylocal origin = mouse.Origin-- unitRay.Direction = origine.p-- unitRay.Direction ≈ origin.lookVector
Pour la position du Mouse dans l'espace 3D, voir Mouse.Hit .
Échantillons de code
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
L'objet dans l'espace 3D auquel le mouse pointe.
Remarque :
- Si Mouse.TargetFilter a été défini, le filtre cible et ses descendants seront ignorés.
- Lorsque la souris ne pointe pas vers un BasePart , par exemple lorsqu'elle pointe vers le ciel, la cible sera nil .
- Les développeurs qui recherchent la position de la souris dans l'espace 3D devraient utiliser Mouse.Hit .
Échantillons de code
L'exemple de code suivant, lorsqu'il est placé dans StarterPlayerScripts créera un outil dans le sac à dos du joueur qui, une fois équipé, changera le BasePart.BrickColor de chaque BasePart que le joueur clique.
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
Cette propriété détermine un objet à ignorer par la souris lors du calcul de Mouse.Hit et de Mouse.Target .Les descendants de l'objet sont également ignorés, de sorte qu'il est possible d'ignorer plusieurs objets aussi longtemps qu'ils sont un descendant de l'objet auquel cette propriété est définie.Cette propriété est utile lors du filtrage des modèles contenant des effets spéciaux ou des décorations qui ne devraient pas affecter Mouse.Hit ou Mouse.Target .
Cette propriété peut être définie sur n'importe quelle Instance ou nil, par exemple :
local Players = game:GetService("Players")local Workspace = game:GetService("Workspace")local player = Players.LocalPlayerlocal mouse = player:GetMouse()mouse.TargetFilter = Workspace.Model
Notez que le Character de la Players.LocalPlayer est ignoré par la souris automatiquement.
TargetSurface
Cette propriété indique la Enum.NormalId de la surface BasePart à laquelle la souris pointe.Cette propriété est dérivée de la position du monde de la souris ( Mouse.Hit ) et de la partie vers laquelle la souris pointe ( Mouse.Target ).
Cette propriété n'a pas de sens lorsque la souris ne pointe pas sur une partie, par exemple lorsque la souris pointe vers le ciel.Pour le moment, cette propriété est réglée sur « Droite » dans ces conditions.Avant d'utiliser cette propriété, vérifiez que la cible de la souris n'est pas nil .
local Players = game:GetService("Players")local player = Players.LocalPlayerlocal mouse = player:GetMouse()-- Vérifiez qu'il existe une partie à laquelle la souris pointeif 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
Échantillons de code
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
La propriété UnitRay est dirigée vers la position de la souris dans l'espace 3D (définie par ).Il provient du CFrame du Workspace.CurrentCamera.Comme tous les rayons d'unité, il a une distance de 1.
local Players = game:GetService("Players")local player = Players.LocalPlayerlocal mouse = player:GetMouse()print(mouse.UnitRay.Direction.Magnitude) -- Always 1
ViewSizeX
La propriété ViewSizeX décrit la composante horizontale de la taille de la fenêtre du jeu en pixels.
Échantillons de code
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
La propriété ViewSizeY décrit la composante verticale de la taille de la fenêtre du jeu en pixels. Cette longueur inclut l'espace utilisé par la barre supérieure.
Échantillons de code
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)
Lors de la détection de modifications de la position de la souris sur l'écran, il est recommandé d'utiliser ContextActionService:BindAction() avec Enum.UserInputType.MouseMovement ou UserInputService.InputChanged, qui décrivent tous deux la position de la souris en utilisant la propriété Position (un Vector3 ) d'un InputObject, au lieu d'utiliser cette propriété et les propriétés apparentées.
La propriété X décrit la composante horizontale de la position de la souris sur l'écran.La position est mesurée en pixels par rapport au coin supérieur gauche, sous la barre supérieure.Cette propriété peut être utilisée en conjonction avec Mouse.Y pour produire un Vector2 représentant la position de la souris :
local position = Vector2.new(mouse.X, mouse.Y)
Cette propriété ne déclenche pas Changed ou le signal retourné de GetPropertyChangedSignal . Utilisez l'événement Mouse.Move à la place.
Échantillons de code
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)
Lors de la détection de modifications de la position de la souris sur l'écran, il est recommandé d'utiliser ContextActionService:BindAction() avec Enum.UserInputType.MouseMovement ou UserInputService.InputChanged, qui décrivent tous deux la position de la souris en utilisant la propriété Position (un Vector3 ) d'un InputObject, au lieu d'utiliser cette propriété et les propriétés apparentées.
La propriété Y décrit la composante verticale de la position de la souris sur l'écran.La position est mesurée en pixels par rapport au coin supérieur gauche, sous la barre supérieure.Cette propriété peut être utilisée en conjonction avec Mouse.X pour produire un Vector2 représentant la position de la souris :
local position = Vector2.new(mouse.X, mouse.Y)
Cette propriété ne déclenche pas Changed ou le signal retourné de GetPropertyChangedSignal . Utilisez l'événement Mouse.Move à la place.
Échantillons de code
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)
Méthodes
Évènements
Button1Down
Cet événement se déclenche lorsque le joueur appuie sur le bouton de souris gauche.Notez que cela peut être accédé à partir d'un Tool ; par exemple, lorsqu'il est placé dans un LocalScript , le code ci-dessous imprime Button1Down chaque fois que le bouton de souris gauche est pressé.
local tool = script.Parent -- Assurez-vous que c'est un objet d'outil
tool.Equipped:Connect(function(mouse)
mouse.Button1Down:Connect(function()
print("Button1Down")
end)
end)
Vous pouvez découvrir la position de la souris dans l'espace du monde et si elle pointe vers n'importe quelle BasePart utilisant les propriétés Hit et Target.
Button1Up
Cet événement se déclenche lorsque le joueur relâche le bouton de souris gauche.Notez que cela peut être accédé à partir d'un Tool ; par exemple, lorsqu'il est placé dans un LocalScript , le code ci-dessous imprime Button1Up chaque fois que le bouton de souris gauche est libéré.
local tool = script.Parent -- Assurez-vous que c'est un objet d'outil
tool.Equipped:Connect(function(mouse)
mouse.Button1Up:Connect(function()
print("Button1Up")
end)
end)
Vous pouvez découvrir la position de la souris dans l'espace du monde et si elle pointe vers n'importe quelle BasePart utilisant les propriétés Hit et Target.
Button2Down
Cet événement se déclenche lorsque le joueur appuie sur le bouton droit de sa souris.Notez que cela peut être accédé à partir d'un Tool ; par exemple, lorsqu'il est placé dans un LocalScript , le code ci-dessous imprime Button2Down chaque fois que le bouton droit de la souris est pressé.
local tool = script.Parent -- Assurez-vous que c'est un objet d'outil
tool.Equipped:Connect(function(mouse)
mouse.Button2Down:Connect(function()
print("Button2Down")
end)
end)
Vous pouvez découvrir la position de la souris dans l'espace du monde et si elle pointe vers n'importe quelle BasePart utilisant les propriétés Hit et Target.
Button2Up
Cet événement se déclenche lorsque le joueur relâche le bouton droit de la souris.Notez que cela peut être accédé à partir d'un Tool ; par exemple, lorsqu'il est placé dans un LocalScript , le code ci-dessous imprime Button2Up chaque fois que le bouton droit de la souris est libéré.
local tool = script.Parent -- Assurez-vous que c'est un objet d'outil
tool.Equipped:Connect(function(mouse)
mouse.Button2Up:Connect(function()
print("Button2Up")
end)
end)
Vous pouvez découvrir la position de la souris dans l'espace du monde et si elle pointe vers n'importe quelle BasePart utilisant les propriétés Hit et Target.
Idle
Tiré à chaque battement de cœur auquel la souris n'est pas transmise à un autre événement de souris.
Remarque, cet événement ne doit pas être utilisé pour déterminer quand la souris est immobile. Comme il déclenche chaque battement de cœur, il se déclenchera entre Mouse.Move événements.
Pour obtenir des informations sur la façon d'obtenir l'objet Mouse, veuillez consulter la page Mouse.
Les développeurs peuvent découvrir la position de la souris dans l'espace du monde, et si elle pointe vers n'importe quelle BasePart utilisant les propriétés Mouse.Hit et Mouse.Target.
Note, il est recommandé aux développeurs d'utiliser UserInputService au lieu de l'objet Mouse dans le nouveau travail.
Échantillons de code
Cet exemple montre comment les événements de la souris sont transmis pendant chaque cadre
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
Tiré lorsque la souris est déplacée.
Notez que cet événement se déclenche lorsque la position de la souris est mise à jour, il se déclenchera donc à plusieurs reprises pendant qu'elle se déplace.
Pour obtenir des informations sur la façon d'obtenir l'objet Mouse, veuillez consulter la page Mouse.
Les développeurs peuvent découvrir la position de la souris dans l'espace du monde, et si elle pointe vers n'importe quelle BasePart utilisant les propriétés Mouse.Hit et Mouse.Target.
mouse.Move:Connect(function()
local position = mouse.Hit.p
local target = mouse.Target
print(target, position)
end)
Note, il est recommandé aux développeurs d'utiliser UserInputService au lieu de l'objet Mouse dans le nouveau travail.
Échantillons de code
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
L'événement WheelBackward se déclenche lorsque la molette de la souris est déplacée vers l'arrière.Les utilisations possibles de cet événement incluent le basculement du champ de vision d'un pistolet dans un tireur en première personne (FPS) ou le zoom de la caméra du joueur.
Cela peut être utilisé en conjonction avec l'événement de défilement en avant, Mouse.WheelForward .
Pour obtenir des informations sur la façon d'obtenir l'objet Mouse, veuillez consulter la page Mouse.
Note, il est recommandé aux développeurs d'utiliser UserInputService au lieu de l'objet Mouse dans le nouveau travail.
Échantillons de code
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
L'événement WheelForward se déclenche lorsque la molette de la souris est déplacée vers l'avant.Les utilisations possibles de cet événement incluent le basculement du champ de vision d'un pistolet dans un tireur en première personne (FPS) ou le zoom de la caméra du joueur.
Cela peut être utilisé en conjonction avec l'événement de défilement en arrière, Mouse.WheelBackward .
Pour obtenir des informations sur la façon d'obtenir l'objet Mouse, veuillez consulter la page Mouse.
Note, il est recommandé aux développeurs d'utiliser UserInputService au lieu de l'objet Mouse dans le nouveau travail.
Échantillons de code
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 onWheelForward()
print("Wheel went forward!")
end
mouse.WheelForward:Connect(onWheelForward)