# Mouse

Mouse : `Instance`

## Overview

Mouse provides functions related to detecting mouse button clicks

However, for stable handling of inputs in mobile environments, it is recommended to use UserInputService and ContextActionService instead of Mouse.

## Properties

### Hit

`CFrame`

Returns the CFrame value in 3D space at which the mouse pointer is pointing.

#### Code Samples

```lua
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()

local function UpdateEvent(deltaTime)
    print("Hit Position : ", Mouse.Hit.Position)
end
RunService.Heartbeat:Connect(UpdateEvent)
```

### Origin

`CFrame`

A CFrame that represents from which direction the mouse pointer was input in 3D space.

The current location of camera becomes the starting point, and the direction of the spatial coordinates of the mouse pointer is facing is rotated to represent this value.

#### Code Samples

```lua
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()

local function OnButton1Down()
    print("Button1Down", Mouse.Origin)
end
Mouse.Button1Down:Connect(OnButton1Down)
```

### Target

`BasePart`

This property returns the 3D object the mouse pointer is currently pointing at.

If pointing at a non-BasePart area (e.g., sky), the Target value returns nil.

#### Code Samples

```lua
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()

local function OnButton1Down()
    print("Button1Down", Mouse.Target)
    
    if Mouse.Target.Name == "SpawnLocation" then
        print("Hit SpawnLocation!")
    end
end
Mouse.Button1Down:Connect(OnButton1Down)
```

### ViewSizeX

`number`

Returns the horizontal screen resolution in pixels.

#### Code Samples

```lua
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()

print("ViewSize : ", Mouse.ViewSizeX, " / ", Mouse.ViewSizeY)
```

### ViewSizeY

`number`

Returns the vertical screen resolution in pixels.

#### Code Samples

```lua
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()

print("ViewSize : ", Mouse.ViewSizeX, " / ", Mouse.ViewSizeY)
```

### X

`number`

Returns the horizontal coordinate on screen in pixels when the mouse is clicked.

#### Code Samples

```lua
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()

local function UpdateEvent(deltaTime)
    print("Mouse Position : ", Mouse.X, " / ", Mouse.Y)
end
RunService.Heartbeat:Connect(UpdateEvent)
```

### Y

`number`

Returns the vertical coordinate on screen in pixels when the mouse is clicked.

#### Code Samples

```lua
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()

local function UpdateEvent(deltaTime)
    print("Mouse Position : ", Mouse.X, " / ", Mouse.Y)
end
RunService.Heartbeat:Connect(UpdateEvent)
```

## Methods

## Events

### Button1Down

This event is executed when the player presses the left mouse button.

#### Parameters

#### Code Samples

```lua
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()

local function OnButton1Down()
    print("Button1Down", Mouse.Target)
end
Mouse.Button1Down:Connect(OnButton1Down)
```

### Button1Up

This event is executed when the player releases the left mouse button.

#### Parameters

#### Code Samples

```lua
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()

local function OnButton1Up()
    print("Button1Up")
end
Mouse.Button1Up:Connect(OnButton1Up)
```

### Button2Down

This event is executed when the player presses the right mouse button.

#### Parameters

#### Code Samples

```lua
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()

local function OnButton2Down()
    print("Button2Down", Mouse.Target)
end
Mouse.Button2Down:Connect(OnButton2Down)
```

### Button2Up

This event is executed when the player releases the right mouse button.

#### Parameters

#### Code Samples

```lua
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()

local function OnButton2Up()
    print("Button2Up")
end
Mouse.Button2Up:Connect(OnButton2Up)
```

### TouchEnded

(deprecated) This event is executed when the player releases their finger from the screen.

It is recommended to use the TouchEnded event of UserInputService.

#### Parameters

| `number` x |   |
| ---------- | - |
| `number` y |   |
| `number` z |   |

#### Code Samples

```lua
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()

local function OnTouchEnded()
    print("TouchEnded")
end
Mouse.TouchEnded:Connect(OnTouchEnded)
```

### TouchStarted

(deprecated) This event is executed when the player presses the screen.

It is recommended to use the TouchStarted event of UserInputService.

#### Parameters

| `number` x |   |
| ---------- | - |
| `number` y |   |
| `number` z |   |

#### Code Samples

```lua
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
local Mouse = Player:GetMouse()

local function OnTouchStarted()
    print("TouchStarted")
end
Mouse.TouchStarted:Connect(OnTouchStarted)
```

## See also
