마우스 는 UserInputService 및 ContextActionService 에 의해 대체되었습니다. 이는 더 넓은 범위, 더 많은 기능, 크로스 플랫폼 패턴을 지원하는 등 더 나은 지원을 제공합니다. 이 대체 방법을 사용하도록 권장
마우스 개체는 버튼 및 레이캐스팅을 위한 다양한 API를 포함합니다. 이 개체는 Class.Player:GetMouse() 라는 이름의 Class.Players.LocalPlayer 에 액세스할 수 있습니다. 이 개체는 또한 Class.Tool.Equipped 이벤트를 통해 액세스됩
- Class.Mouse.Icon|Icon 속성, 커서의 모습변경합니다.
-- 로컬 스크립트에서:local Players = game:GetService("Players")local player = Players.LocalPlayerlocal mouse = player:GetMouse()-- 마우스 아이콘 설정mouse.Icon = "rbxasset://SystemCursors/Wait"
참고:
이 개체는 포인터 이동을 제어/제한하지 않습니다. 자세한 내용은 UserInputService.MouseBehavior 및 UserInputService.MouseDeltaSensitivity 를 참조하십시오.
두 함수가 동일한 입력 이벤트에 연결되면, 예를 들어 Button1Down 또는 Class.Button 와 같은, 두 함수 모두 이벤트가 발생할 때 실행됩니다. 이 경우 컨셉트는 침범하지 않
모든 플랫폼에서 마우스가 사용할 수 없지만, 마우스는 여전히 모바일(터치) 및 콘솔(게임패드)에서 작동하므로 마우스가 없거나 포인터 하드웨어가 없는 경우에도 적용됩니다. 명시적인 크로스 플랫폼 동작은 UserInputService 및 ContextActionService를
경험에서 입력을 사용자 정의하는 방법에 대한 자세한 내용은 입력 및 카메라를 참조하십시오.
요약
속성
마우스의 위치에 대한 3D 공간의 CFrame입니다.
Class.Mouse 아이콘의 이미지 아이디.
Class.Workspace.CurrentCamera 와 마우스의 3D 위치를 향해 지향적으로 배치된 Workspace.CurrentCamera 입니다.
3D 공간의 개체는 mouse 를 가리키고 있습니다.
Class.Mouse.Hit 및 Mouse.Target을 결정할 때 무시할 개체(및 그 후손)를 결정합니다.
마우스가 가리키고 있는 BasePart 표면의 Enum.NormalId 를 나타냅니다.
Class.Workspace.CurrentCamera 세계 위치에서 시작하는 Workspace.CurrentCamera 가 마우스의 세계 위치를 향해 직접 향상됩니다.
게임 창의 너비를 픽셀로 설명합니다.
게임 창의 높이를 픽셀로 설명합니다.
화면에 마우스 위치의 X (가로) 구성 요소를 설명합니다.
마우스의 화면 위치의 Y(垂直) 구성 요소를 설명합니다.
이벤트
왼쪽 마우스 버튼이 누르면 화재됩니다.
왼쪽 마우스 버튼이 릴리스되면 화재됩니다.
오른쪽 마우스 버튼이 누르면 화재됩니다.
오른쪽 마우스 버튼이 릴리스되면 발사됩니다.
마우스가 다른 마우스 이벤트로 전송되지 않는 동안 마다 심장 소리가 들립니다.
마우스가 이동할 때 발생합니다.
마우스 휠이 뒤로 스크롤되면 화재가 발생합니다.
마우스 휠이 앞으로 스크롤되면 화재됩니다.
속성
Hit
이 속성은 3D 공간에서 마우스의 위치에 대한 CFrame 를 나타냅니다. 참고로 Mouse.TargetFilter 및 그 후손은 무시됩니다.
개발자는 다음과 같이 히트의 위치를 얻을 수 있습니다.
local position = mouse.Hit.Position
히트는 종종 Tools 를 사용하여 마우스를 향해 무기를 발사합니다.
Class.BasePart 마우스가 가리키고 있는 개발자는 Mouse.Target 를 사용해야 합니다.
Mouse.Hit 계산
Hit CFrame의 위치는 마우스의 내부 Ray (확장형 Mouse.UnitRay )와 3D 공간의 개체(예: 부품) 간의 교차 지점으로 계산됩니다.
Hit CFrame의 방향은 Mouse.UnitRay의 방향과 일치합니다.
local unitRayDirection = mouse.UnitRay.Directionlocal mouseHitDirection = mouse.Hit.lookVector-- unitRayDirection ≈ mouseHitDirection-- the vectors are approximately equal
참고, Workspace.CurrentCamera의 롤은 히트 CFrame 의 방향을 계산할 때 사용되지 않습니다.
내부 광선은 1,000 스터드 확장됩니다. 마우스가 3D 공간에 있는 개체를 가리키지 않으면(예를 들어 하늘을 가리키는 경우)이 속성은 Workspace.CurrentCamera 에서 1,000 스터드 멀리 있습니다.
코드 샘플
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
아이콘 은 포인터로 사용할 이미지를 결정하는 속성입니다. 비워면 기본 화살표가 사용됩니다. 커서가 GuiButton에 대해 호버할 때 이 속성이 임시적으로 무시됩니다.
커서를 완전히 숨기려면 투명한 이미지를 사용하지 마십시오 – 대신, Class.UserInputService.MouseIconEnabled를 가짜로 설정합니다.
사용자 마우스 아이콘을 체험에서 얻거나 설정하려면 UserInputService.MouseIcon 를 사용하십시오. Mouse.Icon 은 플러그인 새로운 API를 통해 마우스 커서를 설정하는 데 대해 지원되지 않습니다.
커서 디자인
다음 가이드라인은 자신의 마우스 커서를 만드는 데 도움이 될 수 있습니다.
- 사용된 이미지의 크기는 커서의 크기를 결정합니다.
- 이미지의 중심 은 마우스 입력이 발생하는 곳입니다.
- 기본 마우스 이미지는 64x64 픽셀로, 마우스가 17x24 픽셀의 공간을 차지합니다.
System Cursors for PluginMouse
Class.PluginMouse 를 사용하면 시스템의 기본 커서와 유사한 아
<tbody><tr><td><img src="../../../assets/legacy/Mouse-Icon-Pointer.png"></img></td><td><code>rbxasset://SystemCursors/Arrow</code></td><td>기본적으로 클릭 및 선택.</td></tr><tr><td><img src="../../../assets/legacy/Mouse-Icon-PointingHand.png"></img></td><td><code>rbxasset://SystemCursors/PointingHand</code></td><td>활성 링크/버튼을 마우스로 이동합니다.</td></tr><tr><td><img src="../../../assets/legacy/Mouse-Icon-OpenHand.png"></img></td><td><code>rbxasset://SystemCursors/OpenHand</code></td><td>드래그할 수 있는 아이템위로 마우스를 이동합니다.</td></tr><tr><td><img src="../../../assets/legacy/Mouse-Icon-GrabbingHand.png"></img></td><td><code>rbxasset://SystemCursors/ClosedHand</code></td><td>아이템드래그합니다.</td></tr><tr><td><img src="../../../assets/legacy/Mouse-Icon-IBeam.png"></img></td><td><code>rbxasset://SystemCursors/IBeam</code></td><td>텍스트 필드에 마우스를 올리는 것.</td></tr><tr><td><img src="../../../assets/legacy/Mouse-Icon-ResizeNS.png"></img></td><td><code>rbxasset://SystemCursors/SizeNS</code></td><td>세로 크기 조정 핸들 위로 마우스를 이동합니다.</td></tr><tr><td><img src="../../../assets/legacy/Mouse-Icon-ResizeEW.png"></img></td><td><code>rbxasset://SystemCursors/SizeEW</code></td><td>가로 크기 조정 핸들 위로 마우스를 이동합니다.</td></tr><tr><td><img src="../../../assets/legacy/Mouse-Icon-ResizeNESW.png"></img></td><td><code>rbxasset://SystemCursors/SizeNESW</code></td><td>모서리 크기 조정 핸들 위로 마우스를 이동합니다.</td></tr><tr><td><img src="../../../assets/legacy/Mouse-Icon-ResizeNWSE.png"></img></td><td><code>rbxasset://SystemCursors/SizeNWSE</code></td><td>모서리 크기 조정 핸들 위로 마우스를 이동합니다.</td></tr><tr><td><img src="../../../assets/legacy/Mouse-Icon-ResizeAll.png"></img></td><td><code>rbxasset://SystemCursors/SizeAll</code></td><td>다중 방향 크기 조정 핸들을 마우스로 놓칩니다.</td></tr><tr><td><img src="../../../assets/legacy/Mouse-Icon-ResizeSplitV.png"></img></td><td><code>rbxasset://SystemCursors/SplitNS</code></td><td>세로 스플릿 핸들 위로 마우스를 이동합니다.</td></tr><tr><td><img src="../../../assets/legacy/Mouse-Icon-ResizeSplitH.png"></img></td><td><code>rbxasset://SystemCursors/SplitEW</code></td><td>가로 스플릿 핸들 위로 마우스를 이동합니다.</td></tr><tr><td><img src="../../../assets/legacy/Mouse-Icon-Forbidden.png"></img></td><td><code>rbxasset://SystemCursors/Forbidden</code></td><td>잠긴/금지된 아이템위로 마우스를 이동합니다.</td></tr><tr><td><img src="../../../assets/legacy/Mouse-Icon-Wait.png"></img></td><td><code>rbxasset://SystemCursors/Wait</code></td><td>동작이 진행 중임을 나타냅니다.</td></tr><tr><td><img src="../../../assets/legacy/Mouse-Icon-Busy.png"></img></td><td><code>rbxasset://SystemCursors/Busy</code></td><td>시스템이 바쁜지 여부를 나타냅니다.</td></tr><tr><td><img src="../../../assets/legacy/Mouse-Icon-Crosshair.png"></img></td><td><code>rbxasset://SystemCursors/Cross</code></td><td>핀 선택 영역에 마우스를 이동합니다.</td></tr></tbody>
보기\* | 자산 | 권장 사용 |
---|
이 모양은 가장자리이며 실제 모양은 운영 체제에 따라 다릅니다.
코드 샘플
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
원시 Mouse 속성은 마우스 원시 위치를 나타내는 CFrame 입니다. 이는 마우스의 3D 위치를 향해 정렬되어 있습니다. 이 속성은 Workspace.CurrentCamera 에 배치되어 있습니다.
Mouse.UnitRay 는 원래 위치와 동일한 위치에서 시작하고 같은 방향으로 연장됩니다.
local unitRay = mouse.UnitRaylocal origin = mouse.Origin-- 단위Ray.Direction = origin.p-- unitRay.Direction ≈ origin.lookVector
3D 공간에서 Mouse의 위치를 보려면 Mouse.Hit를 참조하십시오.
코드 샘플
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
3D 공간의 개체는 mouse 를 가리키고 있습니다.
참고:
- Class.Mouse.TargetFilter가 설정된 경우 대상 필터 및 그 하위 요소가 무시됩니다.
- 마우스가 하늘을 가리키지 않으면 BasePart 를 가리키지 않을 때 대상은 일반적으로 0이 됩니다.
- 3D 공간의 마우스 위치를 찾는 개발자는 Mouse.Hit 를 사용해야 합니다.
코드 샘플
The following code sample, when placed in StarterPlayerScripts will create a tool in the player's backpack that, once equipped, will change the BasePart.BrickColor of every BasePart the player clicks on.
local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
local backpack = localPlayer:WaitForChild("Backpack")
local tool = Instance.new("Tool")
tool.RequiresHandle = false
tool.CanBeDropped = false
tool.Parent = backpack
tool.Equipped:Connect(function(mouse)
mouse.Button1Down:Connect(function()
if mouse.Target and mouse.Target.Parent then
mouse.Target.BrickColor = BrickColor.random()
end
end)
end)
TargetFilter
이 속성은 마우스가 Mouse.Hit 및 Mouse.Target 을 계산할 때 무시할 개체를 결정합니다. 개체의 후손도 무시되므로 개체가 속성이 설정개체의 후손이
이 속성은 Instance 또는 nil로 설정할 수 있습니다. 예를 들어:
local Players = game:GetService("Players")local player = Players.LocalPlayerlocal mouse = player:GetMouse()mouse.TargetFilter = workspace.Model
Class.Player.Character|Character 의 Players.LocalPlayer 이 마우스에 자동으로 무시됩니다.
TargetSurface
이 속성은 마우스가 가리키고 있는 Enum.NormalId 표면의 BasePart 를 나타냅니다. 이 속성은 마우스 위치( Class.Mouse.Hit )와 마우스가 향할 부분( 2> Class.Mouse.Target) 에서 파생됩니다.
이 속성은 마우스가 부품을 가리키지 않을 때 의미가 없습니다. 예를 들어, 마우스가 하늘을 가리키는 경우. 이 속성은 현재 이 조건에 따라 '오른쪽'으로 설정됩니다. 이 속성을 사용하기 전에 마우스의 대상이 부분이 아닌지 확인하십시오.
local Players = game:GetService("Players")local player = Players.LocalPlayerlocal mouse = player:GetMouse()-- 마우스가 가리키는 부분이 있는지 확인하십시오if 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
코드 샘플
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
UnitRay 속성은 3D 공간의 마우스 위치를 향한 Ray 입니다 (Mouse.Hit 에 설명됨). 그것은 Class.Workspace.CurrentCamera 의 Class.Camera.CFrame|CFrame 에서 원래됩니다. 모든 단위 빔과 마찬가지로, 그것은 1을
local Players = game:GetService("Players")local player = Players.LocalPlayerlocal mouse = player:GetMouse()print(mouse.UnitRay.Direction.magnitude) -- Always 1
ViewSizeX
ViewSizeX 속성은 게임 창의 크기를 픽셀 단위로 설명합니다.
코드 샘플
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
ViewSizeY 속성은 게임 창의 크기를 픽셀 단위로 설명합니다. 이 길이에는 상단 표시줄의 공간이 포함됩니다.
코드 샘플
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)
화면에서 마우스 위치를 변경할 때 마우스 이동 위치나 ContextActionService:BindAction() 또는 Enum.UserInputType.MouseMovement 를 사용하는 것이 좋습니다.
X 속성은 화면에서 마우스 위치의 가로 구성 요소를 설명합니다. 위치는 상단 왼쪽 모서리에 대한 피셀 기준으로 측정됩니다. 이 속성은 Mouse.Y와 함께 사용하여 마우스 위치를 나타내는 Vector2를 생성합니다.
local position = Vector2.new(mouse.X, mouse.Y)
이 속성은 Changed 또는 GetPropertyChangedSignal 에서 반환되는 신호를 발생시키지 않습니다. Mouse.Move 이벤트를 대신 사용하십시오.
코드 샘플
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)
화면에서 마우스 위치를 변경할 때 마우스 이동 위치나 ContextActionService:BindAction() 또는 Enum.UserInputType.MouseMovement 를 사용하는 것이 좋습니다.
Y 속성은 화면에서 마우스 위치의 가로 구성 요소를 설명합니다. 위치는 상단 왼쪽 모서리에 대한 피셀 수치로 측정됩니다. 이 속성은 Mouse.X와 함께 사용하여 마우스 위치를 나타내는 Vector2를 생성합니다.
local position = Vector2.new(mouse.X, mouse.Y)
이 속성은 Changed 또는 GetPropertyChangedSignal 에서 반환되는 신호를 발생시키지 않습니다. Mouse.Move 이벤트를 대신 사용하십시오.
코드 샘플
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)
메서드
이벤트
Button1Down
버튼1Down 심지어 플레이어가 왼쪽 마우스 버튼을 누르면 발생합니다.
이 기능은 Tool 에서도 액세스할 수 있습니다. 예를 들어, 왼쪽 마우스 버튼을 누르면 코드 아래에 있는 Button1Down을 항상 인쇄하게 하려면 LocalScript 에 배치됩니다.
local Tool = script.Parent --이 개체가 도구 개체인지 확인하십시오
Tool.Equipped:Connect(function(Mouse)
Mouse.Button1Down:Connect(function()
print("Button1Down")
end)
end)
개발자는 세계 공간에서 마우스의 위치를 확인할 수 있으며, BasePart 및 Mouse.Hit 속성을 사용하여 마우스가 어느 위치에 있는지 확인할 수 있습니다.
마우스 개체를 얻는 방법에 대한 자세한 내용은 Mouse 페이지를 참조하십시오.
참고, 개발자는 새 작업에서 UserInputService 대신에 Mouse 개체를 사용하는 것이 좋습니다.
코드 샘플
The following code sample, when placed in StarterPlayerScripts will create a tool in the player's backpack that, once equipped, will change the BasePart.BrickColor of every BasePart the player clicks on.
local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
local backpack = localPlayer:WaitForChild("Backpack")
local tool = Instance.new("Tool")
tool.RequiresHandle = false
tool.CanBeDropped = false
tool.Parent = backpack
tool.Equipped:Connect(function(mouse)
mouse.Button1Down:Connect(function()
if mouse.Target and mouse.Target.Parent then
mouse.Target.BrickColor = BrickColor.random()
end
end)
end)
Button1Up
왼쪽 마우스 버튼이 릴리스되면 화재됩니다.
Class.Mouse 개체를 얻는 방법에 대한 자세한 내용은 Mouse 페이지를 참조하십시오.
개발자는 세계 공간의 마우스 위치를 알 수 있으며, BasePart 및 Mouse.Hit 속성을 사용하여 마우스가 특정 Mouse.Target에 가리키고 있는지 여부를 확인할 수 있습니다.
참고, 개발자는 새 작업에서 UserInputService 대신에 Mouse 개체를 사용하는 것이 좋습니다.
코드 샘플
The follow example changes the BasePart.BrickColor of every BasePart the player clicks and releases their mouse on.
In order for a part to change color, the player's mouse must be over the part both when the player presses their left mouse button down and when the player releases their left mouse button.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local target = nil
local function button1Down()
target = mouse.Target
end
local function button1Up()
if target == mouse.Target then
target.BrickColor = BrickColor.random()
end
end
mouse.Button1Down:Connect(button1Down)
mouse.Button1Up:Connect(button1Up)
Button2Down
버튼2다운은 플레이어가 오른쪽 마우스 버튼을 누르면 실행됩니다.
이 기능은 Tool 에서도 액세스할 수 있습니다. 예를 들어, 마우스 오른쪽 버튼이 누르여 배치된 경우 아래의 코드가 버튼2Down을 인쇄합니다:
local Tool = script.Parent --이 개체가 도구 개체인지 확인하십시오
Tool.Equipped:Connect(function(Mouse)
Mouse.Button2Down:Connect(function()
print("Button2Down")
end)
end).
개발자는 세계 공간에서 마우스의 위치를 확인할 수 있으며, BasePart 및 Mouse.Hit 속성을 사용하여 마우스가 어느 위치에 있는지 확인할 수 있습니다.
마우스 개체를 얻는 방법에 대한 자세한 내용은 Mouse 페이지를 참조하십시오.
참고, 개발자는 새 작업에서 UserInputService 대신에 Mouse 개체를 사용하는 것이 좋습니다.
코드 샘플
The following code sample, when placed in StarterPlayerScripts will create a tool in the player's backpack that, once equipped, will change the BasePart.BrickColor of every BasePart the player clicks on.
local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
local backpack = localPlayer:WaitForChild("Backpack")
local tool = Instance.new("Tool")
tool.RequiresHandle = false
tool.CanBeDropped = false
tool.Parent = backpack
tool.Equipped:Connect(function(mouse)
mouse.Button2Down:Connect(function()
if mouse.Target and mouse.Target.Parent then
mouse.Target.BrickColor = BrickColor.random()
end
end)
end)
Button2Up
오른쪽 마우스 버튼이 릴리스되면 발사됩니다.
mouse.Button2Up:Connect(function()
print("button 2 up!")
end
Class.Mouse 개체를 얻는 방법에 대한 자세한 내용은 Mouse 페이지를 참조하십시오.
개발자는 세계 공간의 마우스 위치를 알 수 있으며, BasePart 및 Mouse.Hit 속성을 사용하여 마우스가 특정 Mouse.Target에 가리키고 있는지 여부를 확인할 수 있습니다.
참고, 개발자는 새 작업에서 UserInputService 대신에 Mouse 개체를 사용하는 것이 좋습니다.
코드 샘플
The follow example changes the BasePart.BrickColor of every BasePart the player clicks and releases their right mouse button on.
In order for a part to change color, the player's mouse must be over the part both when the player presses their right mouse button down and when the player releases their right mouse button.
local Players = game:GetService("Players")
local mouse = Players.LocalPlayer:GetMouse()
local target = nil
mouse.Button2Down:Connect(function()
target = mouse.Target
end)
mouse.Button2Up:Connect(function()
if target == mouse.Target then
target.BrickColor = BrickColor.random()
end
end)
Idle
마우스가 다른 마우스 이벤트로 전송되지 않는 동안 마다 심장 소리가 들립니다.
참고, 이 이벤트는 마우스가 여전히 있는지 여부를 결정하는 데 사용되지 않아야 합니다. 마우스가 모든 심박을 발생시키면 심박 사이의 Mouse.Move 이벤트에 발생합니다.
Class.Mouse 개체를 얻는 방법에 대한 자세한 내용은 Mouse 페이지를 참조하십시오.
개발자는 세계 공간의 마우스 위치를 알 수 있으며, BasePart 및 Mouse.Hit 속성을 사용하여 마우스가 특정 Mouse.Target에 가리키고 있는지 여부를 확인할 수 있습니다.
참고, 개발자는 새 작업에서 UserInputService 대신에 Mouse 개체를 사용하는 것이 좋습니다.
코드 샘플
This example demonstrates how mouse events are passed during each frame
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local events = {
"Button1Down",
"Button1Up",
"Button2Down",
"Button2Up",
"Idle",
"Move",
"WheelBackward",
"WheelForward",
"KeyDown",
"KeyUp",
}
local currentEvent
local frame = 0
local function processInput()
frame = frame + 1
print("Frame", frame, "- mouse event was passed to", currentEvent)
end
for _, event in pairs(events) do
mouse[event]:Connect(function()
currentEvent = event
end)
end
RunService:BindToRenderStep("ProcessInput", Enum.RenderPriority.Input.Value, processInput)
Move
마우스가 이동할 때 발생합니다.
참고, 이 이벤트는 마우스 위치가 업데이트되면 발생하므로 이동 중에 반복해서 발생합니다.
Class.Mouse 개체를 얻는 방법에 대한 자세한 내용은 Mouse 페이지를 참조하십시오.
개발자는 세계 공간의 마우스 위치를 알 수 있으며, BasePart 및 Mouse.Hit 속성을 사용하여 마우스가 특정 Mouse.Target에 가리키고 있는지 여부를 확인할 수 있습니다.
mouse.Move:Connect(function()
local position = mouse.Hit.p
local target = mouse.Target
print(target, position)
end)
참고, 개발자는 새 작업에서 UserInputService 대신에 Mouse 개체를 사용하는 것이 좋습니다.
코드 샘플
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
마우스 휠이 뒤로 스크롤되면 WheelBackward 이벤트가 발생합니다. 이 이벤트의 가능한 사용 사례는 첫 번째 사람 슈팅 게임 (FPS)에서 사격의 조준을 전환하거나 플레이어의 카메라를 확대하는 것입니다.
이 기능은 스크롤 전진 이벤트와 함께 사용할 수 있습니다, Mouse.WheelForward .
Class.Mouse 개체를 얻는 방법에 대한 자세한 내용은 Mouse 페이지를 참조하십시오.
참고, 개발자는 새 작업에서 UserInputService 대신에 Mouse 개체를 사용하는 것이 좋습니다.
코드 샘플
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
마우스 휠이 앞으로 스크롤될 때 휠포워드 이벤트가 발생합니다. 이 이벤트는 첫 번째 사람 슈팅 게임(FPS)에서 플레이어의 조준경을 전환하거나 플레이어의 카메라를 확대하는 등의 용途로 사용될 수 있습니다.
이 기능은 스크롤 백 이벤트와 함께 사용할 수 있습니다, Mouse.WheelBackward .
Class.Mouse 개체를 얻는 방법에 대한 자세한 내용은 Mouse 페이지를 참조하십시오.
참고, 개발자는 새 작업에서 UserInputService 대신에 Mouse 개체를 사용하는 것이 좋습니다.
코드 샘플
The below example assumes that you have already got the player's mouse (and set it as a variable named 'mouse'), whether by use of a Tool, HopperBin or the Player:GetMouse() method. It will print "Wheel went forward!" when the player scrolls forwards.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local function onWheelBackward()
print("Wheel went forward!")
end
mouse.WheelForward:Connect(onWheelBackward)