Mouse

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável

O mouse foi substituído por UserInputService e ContextActionService, que cobrem um escopo mais amplo, são mais ricos em recursos e suportam melhor padrões de plataforma cruzada .Continua a ser suportado devido ao seu uso generalizado, mas você deve considerar fortemente usar essas alternativas.

O objeto Rato abriga várias API para pontos, principalmente para botões e raycasting.Pode ser acessado através de Player:GetMouse() chamado no Players.LocalPlayer em um LocalScript .Também é passado pelo evento Tool.Equipped .


-- De um LocalScript:
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
-- Definindo o ícone do mouse
mouse.Icon = "rbxasset://SystemCursors/Wait"

Nota:

  • Este objeto não controla/restringe o movimento do ponteiro. Para isso, veja UserInputService.MouseBehavior e UserInputService.MouseDeltaSensitivity .

  • Se duas funções estiverem conectadas ao mesmo evento de entrada, como , ambas as funções serão executadas quando o evento for disparado.Não há conceito de afundamento/passagem de entrada, pois os eventos não suportam esse comportamento.No entanto, ContextActionService tem esse comportamento através de BindAction .

  • Embora um mouse possa não estar disponível em todas as plataformas, o Mouse ainda funcionará no celular (toque) e no console (controle / controle de jogo), que normalmente não têm hardware de mouse ou apontador.Para comportamentos explícitos de plataforma cruzada, use UserInputService e ContextActionService.

    Veja Entrada e Câmera para mais informações sobre a personalização de entradas em sua experiência.

Resumo

Propriedades

  • Somente leitura
    Não replicado
    Ler Parallel

    O CFrame da posição do mouse no espaço 3D.

  • Icon:ContentId
    Ler Parallel

    O ID do conteúdo da imagem usada como o ícone Mouse.

  • Somente leitura
    Não replicado
    Ler Parallel

    Um CFrame posicionado na Workspace.CurrentCamera e orientado para a posição 3D do mouse.

  • Somente leitura
    Não replicado
    Ler Parallel

    O objeto no espaço 3D que o mouse está apontando.

  • Determina que um objeto (e seus descendentes) sejam ignorados ao determinar Mouse.Hit e Mouse.Target .

  • Somente leitura
    Não replicado
    Ler Parallel

    Indica o Enum.NormalId da superfície BasePart na qual o mouse está apontando.

  • Somente leitura
    Não replicado
    Ler Parallel

    Um Ray direcionado para a posição mundial do mouse, originado a partir da posição mundial Workspace.CurrentCamera.

  • Somente leitura
    Não replicado
    Ler Parallel

    Descreve a largura da janela do jogo em pixels.

  • Somente leitura
    Não replicado
    Ler Parallel

    Descreve a altura da janela do jogo em pixels.

  • Somente leitura
    Não replicado
    Ler Parallel

    Descreve o componente X (horizontal) da posição do mouse na tela.

  • Somente leitura
    Não replicado
    Ler Parallel

    Descreve o componente Y (vertical) da posição da tela do mouse.

Eventos

Propriedades

Somente leitura
Não replicado
Ler Parallel

Essa propriedade indica CFrame da posição do mouse no espaço 3D. Observe que Mouse.TargetFilter e seus descendentes serão ignorados.

Os desenvolvedores podem obter a posição de Hit como assim:


local position = mouse.Hit.Position

Hit é frequentemente usado por Tools para disparar uma arma para o mouse em terceira pessoa.

Desenvolvedores que buscam o BasePart o mouse está apontando devem usar Mouse.Target .

Como o Mouse.Hit é calculado?

A posição do CFrame de Acerto é calculada como o ponto de interseção entre o mouse interno Ray (uma versão estendida de Mouse.UnitRay ) e um objeto no espaço 3D (como uma peça).

A orientação do CFrame de Acerto corresponde à direção do Mouse.UnitRay .


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

Observe, o rolamento do Workspace.CurrentCamera não é usado ao calcular a orientação do acerto CFrame.

O raio interno do mouse se estende por 1.000 studs.Se o mouse não estiver apontando para um objeto no espaço 3D (por exemplo, ao apontar para o céu), esta propriedade estará a 1.000 metros de distância do Workspace.CurrentCamera .

Amostras de código

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
Ler Parallel

Ícone é uma propriedade que determina a imagem usada como apontador.Se estiver vazio, uma seta padrão é usada.Enquanto o cursor paira sobre um GuiButton, esta propriedade é ignorada temporariamente.

Para ocultar completamente o cursor, não use uma imagem transparente - em vez disso, defina UserInputService.MouseIconEnabled para falso.

Para obter/definir o ícone do mouse do usuário em experiências, você deve usar UserInputService.MouseIcon.Mouse.Icon será descontinuado após a nova API para plugins definir o cursor do mouse ser liberada.

Projetando um Cursor

As seguintes diretrizes podem se mostrar úteis ao criar seus próprios cursores de mouse:

  • As dimensões da imagem usada determinam o tamanho do cursor.
  • O centro da imagem é onde os inputs do mouse são emitidos.
  • A imagem padrão do mouse é de 64x64 pixels, com o mouse ocupando 17x24 pixels de espaço.
Cursores do Sistema

Ao usar um PluginMouse recuperado de Plugin:GetMouse(), você pode usar os seguintes ícones semelhantes aos cursores padrão do seu sistema, como mãos, setas, I-beams, etc.Você pode usá-los com eventos de GUI como MouseEnter , MouseLeave e MouseButton1Down para fornecer uma experiência de Studio consistente ao interagir com determinados tipos de componentes de GUI.Observe que eles só funcionam para plugins do Studio; eles não funcionarão para outros objetos Mouse.


<th>Recurso</th>
<th>Uso Recomendado</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>Clique e seleção padrão.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-PointingHand.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/PointingHand</code></td><td>Passe o mouse sobre um link/botão ativo.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-OpenHand.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/OpenHand</code></td><td>Passe o mouse sobre um item arrastável.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-GrabbingHand.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/ClosedHand</code></td><td>Arrastar um item.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-IBeam.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/IBeam</code></td><td>Passe o mouse em um campo de texto.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-ResizeNS.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/SizeNS</code></td><td>Passe o Manipulador / alçasobre um botão de redimensionamento vertical.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-ResizeEW.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/SizeEW</code></td><td>Passe o Manipulador / alçasobre um botão de redimensionamento horizontal.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-ResizeNESW.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/SizeNESW</code></td><td>Passe o mouse sobre um botão de redimensionamento de Manipulador / alça.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-ResizeNWSE.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/SizeNWSE</code></td><td>Passe o mouse sobre um botão de redimensionamento de Manipulador / alça.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-ResizeAll.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/SizeAll</code></td><td>Passe o Manipulador / alçasobre um botão de redimensionamento multidirecional.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-ResizeSplitV.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/SplitNS</code></td><td>Passe o mouse sobre um Manipulador / alçavertical "divisor" .</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-ResizeSplitH.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/SplitEW</code></td><td>Passe o mouse sobre um Manipulador / alçahorizontal "divisão".</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-Forbidden.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/Forbidden</code></td><td>Passe o mouse sobre um item bloqueado/proibido.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-Wait.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/Wait</code></td><td>Indicando que uma ação está em andamento.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-Busy.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/Busy</code></td><td>Indicando que o sistema está ocupado.</td>
</tr>
<tr>
<td>
<img src="../../../assets/misc/Mouse-Icon-Crosshair.png" width="30">
</img>
</td>
<td><code>rbxasset://SystemCursors/Cross</code></td><td>Passe o mouse sobre uma área de seleção precisa.</td>
</tr>
</tbody>
Olhe*
\* Essas aparências são aproximações - o visual real depende do seu sistema operacional.

Amostras de código

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

Somente leitura
Não replicado
Ler Parallel

A propriedade de origem indica de onde o mouse se originou.Ela está posicionada na Workspace.CurrentCamera e orientada para a posição 3D do mouse.

Mouse.UnitRay começa na mesma posição que a Origem e se estende por um stud na mesma direção.


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

Para a posição do Mouse na espaço 3D, veja Mouse.Hit .

Amostras de código

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

Somente leitura
Não replicado
Ler Parallel

O objeto no espaço 3D que o mouse está apontando.

Nota:

  • Se Mouse.TargetFilter tiver sido configurar, o filtro alvo e seus descendentes serão ignorados.
  • Quando o mouse não está apontando para um BasePart , por exemplo, quando está apontando para o céu, o Alvo será nil .
  • Desenvolvedores que buscam a posição do mouse no espaço 3D devem usar Mouse.Hit .

Amostras de código

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.

Color Randomizer Tool

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

Ler Parallel

Essa propriedade determina que um objeto seja ignorado pelo mouse ao calcular Mouse.Hit e Mouse.Target .Os descendentes do objeto também são ignorados, portanto, é possível ignorar vários objetos desde que sejam descendentes do objeto ao qual essa propriedade é configurar.Essa propriedade é útil ao filtrar modelos que contêm efeitos especiais ou decorações que não devem afetar Mouse.Hit ou Mouse.Target.

Essa propriedade pode ser definida para qualquer Instance ou nil, por exemplo:


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

Observe que o Character da Players.LocalPlayer é ignorado pelo mouse automaticamente.

TargetSurface

Somente leitura
Não replicado
Ler Parallel

Essa propriedade indica o Enum.NormalId da superfície BasePart na qual o mouse está apontando.Essa propriedade é derivada da posição mundial do mouse ( Mouse.Hit ) e da parte para a qual o mouse está apontando ( Mouse.Target ).

Essa propriedade não é significativa quando o mouse não está apontando para uma parte, por exemplo, quando o mouse está apontando para o céu.No momento, esta propriedade está definida como 'Direita' nessas circunstâncias.Antes de usar esta propriedade, verifique se o alvo do mouse não é nil .


local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
-- Verifique se existe uma parte na qual o mouse está apontando
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

Amostras de código

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

Somente leitura
Não replicado
Ler Parallel

A propriedade UnitRay é um Ray direcionada para a posição do mouse no espaço 3D (descrita por Mouse.Hit ).Origina-se do CFrame da Workspace.CurrentCamera .Como todos os raios de unidade, tem uma distância de 1.


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

ViewSizeX

Somente leitura
Não replicado
Ler Parallel

A propriedade ViewSizeX descreve o componente horizontal do tamanho da janela do jogo em pixels.

Amostras de código

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

Somente leitura
Não replicado
Ler Parallel

A propriedade ViewSizeY descreve o componente vertical do tamanho da janela do jogo em pixels. Este comprimento inclui o espaço usado pela barra superior.

Amostras de código

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)
Somente leitura
Não replicado
Ler Parallel

Ao detectar mudanças na posição do mouse na tela, é recomendado que você use ContextActionService:BindAction() com Enum.UserInputType.MouseMovement ou UserInputService.InputChanged, que ambos descrevem a posição do mouse usando o Position (um Vector3) de um InputObject, em vez de usar isso e propriedades relacionadas.

A propriedade X descreve o componente horizontal da posição do mouse na tela.A posição é medida em pixels em relação ao canto superior esquerdo, sob a barra superior.Essa propriedade pode ser usada em conjunto com Mouse.Y para produzir um Vector2 representando a posição do mouse:


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

Essa propriedade não dispara Changed ou o sinal retornado de GetPropertyChangedSignal . Use o evento Mouse.Move em vez disso.

Amostras de código

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)
Somente leitura
Não replicado
Ler Parallel

Ao detectar mudanças na posição do mouse na tela, é recomendado que você use ContextActionService:BindAction() com Enum.UserInputType.MouseMovement ou UserInputService.InputChanged, que ambos descrevem a posição do mouse usando o Position (um Vector3) de um InputObject, em vez de usar isso e propriedades relacionadas.

A propriedade Y define o componente vertical da posição do mouse na tela.A posição é medida em pixels em relação ao canto superior esquerdo, sob a barra superior.Essa propriedade pode ser usada em conjunto com Mouse.X para produzir um Vector2 representando a posição do mouse:


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

Essa propriedade não dispara Changed ou o sinal retornado de GetPropertyChangedSignal . Use o evento Mouse.Move em vez disso.

Amostras de código

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)

Métodos

Eventos

Button1Down

Este evento é disparado quando o jogador pressiona o botão esquerdo do mouse.Observe que isso pode ser acessado a partir de um Tool ; por exemplo, quando colocado em um LocalScript , o código abaixo imprime Button1Down sempre que o botão esquerdo do mouse for pressionado.


local tool = script.Parent -- Certifique-se de que este é um Objetode Ferramenta
tool.Equipped:Connect(function(mouse)
mouse.Button1Down:Connect(function()
print("Button1Down")
end)
end)

Você pode descobrir a posição do mouse no espaço do mundo e se ele está apontando para qualquer BasePart usando as propriedades Hit e Target.


Button1Up

Este evento dispara quando o jogador libera o botão esquerdo do mouse.Observe que isso pode ser acessado a partir de um Tool ; por exemplo, quando colocado em um LocalScript , o código abaixo imprime Button1Up sempre que o botão esquerdo do mouse for liberado.


local tool = script.Parent -- Certifique-se de que este é um Objetode Ferramenta
tool.Equipped:Connect(function(mouse)
mouse.Button1Up:Connect(function()
print("Button1Up")
end)
end)

Você pode descobrir a posição do mouse no espaço do mundo e se ele está apontando para qualquer BasePart usando as propriedades Hit e Target.


Button2Down

Este evento é disparado quando o jogador pressiona o botão direito do mouse.Observe que isso pode ser acessado a partir de um Tool ; por exemplo, quando colocado em um LocalScript , o código abaixo imprime Button2Down sempre que o botão direito do mouse for pressionado.


local tool = script.Parent -- Certifique-se de que este é um Objetode Ferramenta
tool.Equipped:Connect(function(mouse)
mouse.Button2Down:Connect(function()
print("Button2Down")
end)
end)

Você pode descobrir a posição do mouse no espaço do mundo e se ele está apontando para qualquer BasePart usando as propriedades Hit e Target.


Button2Up

Este evento dispara quando o jogador libera o botão direito do mouse.Observe que isso pode ser acessado a partir de um Tool ; por exemplo, quando colocado em um LocalScript , o código abaixo imprime Button2Up sempre que o botão direito do mouse for liberado.


local tool = script.Parent -- Certifique-se de que este é um Objetode Ferramenta
tool.Equipped:Connect(function(mouse)
mouse.Button2Up:Connect(function()
print("Button2Up")
end)
end)

Você pode descobrir a posição do mouse no espaço do mundo e se ele está apontando para qualquer BasePart usando as propriedades Hit e Target.


Idle

Dispedido durante cada batimento cardíaco que o mouse não está sendo passado para outro evento do mouse.

Observe, este evento não deve ser usado para determinar quando o mouse está parado. Como ele dispara a cada batimento cardíaco, ele dispara entre Mouse.Move eventos.

Para obter informações sobre como obter o ObjetoMouse, consulte a página Mouse.

Os desenvolvedores podem descobrir a posição do mouse no espaço mundial e se ele está apontando para qualquer BasePart usando as propriedades Mouse.Hit e Mouse.Target.

Observe, os desenvolvedores são recomendados a usar UserInputService em vez do objeto Mouse em novo trabalho.


Amostras de código

This example demonstrates how mouse events are passed during each frame

Mouse.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

Disparado quando o mouse é movido.

Observe, este evento é disparado quando a posição do mouse é atualizada, portanto, ele disparará repetidamente enquanto for movido.

Para obter informações sobre como obter o ObjetoMouse, consulte a página Mouse.

Os desenvolvedores podem descobrir a posição do mouse no espaço mundial e se ele está apontando para qualquer BasePart usando as propriedades Mouse.Hit e Mouse.Target.


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

Observe, os desenvolvedores são recomendados a usar UserInputService em vez do objeto Mouse em novo trabalho.


Amostras de código

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

O evento WheelBackward é acionado quando a roda do mouse é deslocada para trás.Os usos possíveis para este evento incluem alternar o escopo de uma arma em um atirador de primeira pessoa (FPS) ou ampliar a Câmerado jogador.

Isso pode ser usado ao lado do evento de rolagem para frente, Mouse.WheelForward .

Para obter informações sobre como obter o ObjetoMouse, consulte a página Mouse.

Observe, os desenvolvedores são recomendados a usar UserInputService em vez do objeto Mouse em novo trabalho.


Amostras de código

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

O evento WheelForward é acionado quando a roda do mouse é deslocada para a frente.Os usos possíveis para este evento incluem alternar o escopo de uma arma em um atirador de primeira pessoa (FPS) ou ampliar a Câmerado jogador.

Isso pode ser usado ao lado do evento de rolagem para trás, Mouse.WheelBackward .

Para obter informações sobre como obter o ObjetoMouse, consulte a página Mouse.

Observe, os desenvolvedores são recomendados a usar UserInputService em vez do objeto Mouse em novo trabalho.


Amostras de código

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 onWheelBackward()
print("Wheel went forward!")
end
mouse.WheelForward:Connect(onWheelBackward)