Roblox 세션의 큰 비율이 마우스와 키보드가 있는 장치에서 재생되므로 광범위한 대상을 위한 경험을 디자인할 때 이러한 입력을 적절하게 지원하는 것이 중요합니다.마우스 및 키보드 입력에 익숙해지면 모바일 및 게임패드 입력을 설정하여 여러 플랫폼에서 경험을 호환하게 만듭니다.
편의를 위해 Roblox는 가장 일반적인 마우스 및 키보드 입력을 기본 바인딩으로 설정하며, 예약된 바인딩을 제외하고 재정의할 수 있습니다.
일반 마우스 입력
모든 장치 입력과 마찬가지로, UserInputService를 사용하여 마우스 입력을 캡처할 수 있습니다.이 서비스는 한 번에 여러 장치의 입력 변경 및 장치 입력 상태를 확인할 수 있는 확장 가능한 방법을 제공합니다.Roblox는 또한 레거시 마우스 입력 검색을 PlayerMouse 및 ClickDetectors로 지원합니다.
또한, 컨텍스트에 따라 단일 입력에서 여러 작업을 처리하기 위해 ContextActionService를 사용할 수 있습니다, 예를 들어 바위 근처에서 도구를 사용하거나 건설내에서 문을 열 때.컨텍스트 종속 입력에 대한 정보는 컨텍스트 특정 입력 작업 설정에 참조하십시오.
다음 LocalScript 는 StarterPlayerScripts 에 배치되면 마우스 클릭을 캡처하고 마우스 위치를 출력 창에 인쇄합니다.
로컬스크립트 - 출력 마우스 클릭 및 위치
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- 먼저 "처리된 이벤트"가 진실인지 확인합니다
-- 이는 다른 스크립트가 이미 입력을 처리했기 때문에 이 스크립트는 무시된다는 것을 나타냅니다
if processedEvent then return end
-- 다음으로, 입력이 마우스 이벤트인지 확인합니다
if inputObject.UserInputType == Enum.UserInputType.MouseButton1 then
print("Left Mouse button was pressed:", inputObject.Position)
elseif inputObject.UserInputType == Enum.UserInputType.MouseButton2 then
print("Right Mouse button was pressed:", inputObject.Position)
end
end
UserInputService.InputEnded:Connect(onInputEnded)
일반 키보드 입력
키보드 이벤트에 액세스하려면 UserInputService.InputEnded 이벤트를 사용하여 언제든지 키스트로크 또는 다른 입력이 끝나는 시점을 추적합니다.마우스 이벤트와 비슷하게, 이 이벤트는 LocalScript 작동합니다.
다음 , 을 배치하면 , 누른 키의 을 출력 창에 인쇄합니다:
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- 먼저 "처리된 이벤트"가 진실인지 확인합니다
-- 이는 다른 스크립트가 이미 입력을 처리했기 때문에 이 스크립트는 무시된다는 것을 나타냅니다.
if processedEvent then return end
-- 다음으로, 입력이 키보드 이벤트인지 확인하십시오
if inputObject.UserInputType == Enum.UserInputType.Keyboard then
print("A key was released: " .. inputObject.KeyCode.Name)
end
end
UserInputService.InputEnded:Connect(onInputEnded)
UI 입력
마우스와 키보드 입력은 자동으로 상호 작용하는 UI 요소(TextButtons 및 ImageButtons 및 양식의 필드와 같은 텍스트 입력을 캡처하는 TextBoxes와 함께)와 함께 작동하며, 텍스트 입력을 필드처럼 캡처하는 것과 마찬가지로 작동합니다.
버튼 및 텍스트 입력 개체 생성에 대한 자세한 정보는 버튼 및 텍스트 입력을 참조하십시오.
문자 이동 모드
StarterPlayer.DevComputerMovementMode 값을 변경하여 Roblox 경험에 마우스 및 키보드 이동 제어 스키마를 설정할 수 있습니다.
옵션 | 설명 |
---|---|
사용자 선택 | 경험 내 메뉴에서 사용자가 원하는 제어 스키마를 선택할 수 있도록 합니다. 이 옵션은 기본적으로 활성화됩니다. |
키보드마우스 | 사용자는 이동하려면 WASD 을 누르고 점프하려면 Space 을 누를 수 있습니다.이는 사용자 선택 설정에 대한 키보드 및 마우스 사용자의 기본 설정입니다. |
클릭하여 이동 | 사용자는 대상 위치를 마우스 오른쪽 버튼으로 클릭하여 경험을 이동할 수만 있습니다. |
스크립트 가능 | 모든 기본 컨트롤을 비활성화하고 자신의 컨트롤을 바인딩할 수 있도록 허용합니다. |
마우스 아이콘
경험 내에서 사용자의 마우스 아이콘의 모양과 동작을 사용자 지정하여 모든 UI 요소에서 일관된 스타일을 만들 수 있습니다.여기에는 버튼을 가리키는 등의 특정 상황에서 사용자의 마우스 아이콘을 일시적으로 변경하는 것이 포함됩니다.
아이콘 변경
사용자의 마우스 아이콘을 변경하려면 LocalScript 에서 MouseIcon 속성을 사용자 지정 Roblox 자산 ID로 설정하여 UserInputService 에 배치합니다.예를 들어, 다음 LocalScript 변경은 사용자의 기본 마우스 아이콘을 중앙에 있는 파란색 점으로 원으로 변경합니다.
local UserInputService = game:GetService("UserInputService")UserInputService.MouseIcon = "rbxassetid://3400146391"
아이콘 숨기기
사용자의 마우스 아이콘을 숨기려면 UserInputService.MouseIconEnabled에서 false로 설정하여 LocalScript에 배치할 수 있습니다.예를 들어 다음 코드는 마우스 아이콘을 2초마다 보이지 않게 전환하고 다시 표시합니다:
local UserInputService = game:GetService("UserInputService")while true dotask.wait(2)UserInputService.MouseIconEnabled = falsetask.wait(2)UserInputService.MouseIconEnabled = trueend
아이콘 잠금
마우스 아이콘의 위치를 값으로 화면에 고정하고 또는 값으로 다시 잠금 해제할 수 있습니다.
사용자의 마우스 아이콘이 위치에 잠겨 있으면, UserInputService.InputChanged 사용자가 마우스를 이동할 때 여전히 발생하며, 마우스가 이동한 거리를 전달합니다.예를 들어, 다음 코드 샘플은 1초 후에 사용자의 마우스 아이콘을 잠그고, 사용자가 마우스를 이동할 때마다 Studio가 마우스 델타를 인쇄합니다.
local UserInputService = game:GetService("UserInputService")
task.wait(5)
UserInputService.MouseBehavior = Enum.MouseBehavior.LockCurrentPosition
UserInputService.InputChanged:Connect(function(inputObject)
if inputObject.UserInputType == Enum.UserInputType.MouseMovement then
print("Mouse delta is (" .. tostring(inputObject.Delta.X) .. ", " .. tostring(inputObject.Delta.Y) .. ")")
end
end)
Roblox 기본 바인딩
Roblox는 모든 경험에 대한 기본 키 바인딩을 제공합니다.이들은 이동, 카메라 제어 및 기본 환경 상호 작용에 사용되는 가장 일반적인 입력입니다.예약된 바인딩을 제외하고, ContextActionService 를 사용하여 컨텍스트에 따라 다양한 바인딩을 단일 액션우선시하는 크로스 플랫폼 바인딩을 만들 수 있습니다, 컨텍스트에 따른 입력에 설명된 대로.
Enum.CoreGuiType 기능, 예를 들어 백팩 또는 채팅 , 추가 기본 입력 목록이 있습니다.Esc (Roblox 메뉴) 또는 F9 (개발자 콘솔)와 같은 예약된 입력을 덮어쓸 수 없습니다.
이러한 바인딩은 Roblox 기본값이지만 사용자 지정 스크립트로 재정의할 수 있습니다.대부분의 Roblox 사용자는 이러한 제어익숙하므로 특정 경우에만 재정의해야 합니다.
입력 | 액션 |
---|---|
W↑ | 앞으로 이동 |
S↓ | 뒤로 이동 |
A | 왼쪽으로 이동 |
D | 오른쪽으로 이동 |
Spacebar | 점프 |
←→ | 카메라 회전 왼쪽이나 오른쪽 |
오른쪽 마우스 버튼 | 누르고 마우스를 드래그하면 카메라 뷰가 이동합니다 |
마우스 스크롤 휠 IO | 카메라 확대 또는 축소 |
Shift | EnableMouseLockOption이 활성화되어 있으면 마우스 잠금 전환 |