Inserimento del mouse e della tastiera

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Un grande numero di sessioni Roblox viene giocato su dispositivi con un mouse e una tastiera, quindi è importante supportare correttamente questi input quando progetti un'esperienza per un pubblico ampio. Una volta che sei a tuo agio con gli input del mouse e della tastiera, rendi la tua esperienza compatibile su più piattaforme impostando dispositivo mobile e gamepad input.

Per convenienza, Roblox imposta le più comuni azioni del mouse e tastiera come azioni predefinite che, ad eccezione delle 2>azioni riservate2>, puoi sovrascrivere.

Input del mouse generico

Come tutti gli input del dispositivo, puoi catturare gli input del mouse usando UserInputService . Questo servizio fornisce un modo scalabile per catturare le modifiche di input e gli stati di input del dispositivo per più dispositivi contemporaneamente. Roblox supporta anche la rileva del mouse legacy con PlayerMouse e ClickDetectors .

Inoltre, puoi utilizzare ContextActionService per gestire più azioni su un singolo input a seconda del contesto, come utilizzare uno strumento quando vicino a una roccia o aprire una porta quando all'interno di un Costruire. Vedi input dipendenti dal contesto per informazioni su come impostare azioni di input specifiche.

Il seguente LocalScript, quando viene posizionato in StarterPlayerScripts, cattura i clic del mouse e stampa la posizione del mouse nella finestra Output :

Script locale - Mouse Click e posizione

local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Prima controlla se il "evento elaborato" è vero
-- Questo indica che un altro script aveva già elaborato l'input, quindi questo viene ignorato
if processedEvent then return end
-- Successivamente, controlla che l'input sia un evento del mouse
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)

Ingresso della tastiera generico

Per accedere agli eventi della tastiera, usa l'evento UserInputService.InputEnded per tracciare quando qualsiasi keystroke o altro input finisce. Come con gli eventi della mouse, questo evento funziona solo all'interno di un LocalScript .

Il seguente LocalScript, quando viene inserito in StarterPlayerScripts, stampa il Enum.KeyCode di una chiave premuta nella finestra di uscita:


local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Prima controlla se il "evento elaborato" è vero
-- Questo indica che un altro script aveva già elaborato l'input, quindi questo viene ignorato.
if processedEvent then return end
-- Successivamente, controlla che l'input sia un evento della tastiera
if inputObject.UserInputType == Enum.UserInputType.Keyboard then
print("A key was released: " .. inputObject.KeyCode.Name)
end
end
UserInputService.InputEnded:Connect(onInputEnded)

Inserimento UI

L'input del mouse e della tastiera funziona automaticamente con elementi dell'interfaccia utente interattiva come TextButtons e ImageButtons , nonché con TextBoxes che cattura l'input del testo come un campo in una forma.

For more information on creating buttons and text input objects, see pulsanti and input del testo .

Modalità di movimento del personaggio

Puoi impostare i controlli del mouse e della tastiera per le esperienze Roblox modificando i valori di StarterPlayer.DevComputerMovementMode a uno dei Seguendo:

OpzioneDescrizione
Scelta dell'utente Consente agli utenti di scegliere il loro schema di controllo desiderato dal menu in-experience. Questa opzione è abilitata per impostazione predefinita.
KeyboardMouse Gli utenti possono premere WASD per spostare e 1> Spazio1> per Salta. Questa è la impostazione predefinita per gli utenti del tastierino e del mouse per il 4> UserChoice4> Configurazione.
ClickToMove Gli utenti possono muoversi solo attraverso l'esperienza facendo clic con il pulsante destro del mouse su una posizione di destinazione.
Scriptabile Disabilita tutti i controlli predefiniti e ti consente di associare i tuoi controlli .

Icons per il mouse

Puoi personalizzare l'aspetto e il comportamento di un'icona del mouse dell'utente nella tua esperienza per creare uno stile coeso in tutti i tuoi elementi UI. Ciò include temporaneamente la modifica dell'icona del mouse dell'utente in situazioni specifiche, come passare il mouse su un pulsante.

Cambiare l'icona

Puoi cambiare l'icona del mouse dell'utente in un LocalScript impostando la proprietà MouseIcon in UserInputService a un ID di risorsa Roblox personalizzato. Ad esempio, le seguenti modifiche 1> Class.LocalScript1> cambiano l'icona del


local UserInputService = game:GetService("UserInputService")
UserInputService.MouseIcon = "rbxassetid://3400146391"

Nascondere l'icona

Puoi nascondere l'icona del mouse dell'utente impostando il UserInputService.MouseIconEnabled su false in un LocalScript . Ad esempio, il seguente codice attiva l'icona del mouse da visibile a invisibile e torna ogni due secondi:


local UserInputService = game:GetService("UserInputService")
while true do
task.wait(2)
UserInputService.MouseIconEnabled = false
task.wait(2)
UserInputService.MouseIconEnabled = true
end

Blocco dell'icona

Puoi bloccare la posizione dell'Iconadel mouse sullo schermo usando UserInputService.MouseBehavior con un valore di Enum.MouseBehavior o LockCurrentPosition , quindi sbloccalo di nuovo con un valore di 1> Class.MouseBehavior|Default1> .

Se l'icona del mouse di un utente è bloccata in una posizione, UserInputService.InputChanged viene ancora attivata quando l'utente muove il Topo, or mouse as computer mouse, passando nella distanza in cui il mouse si è spostato. Ad esempio, il seguente esempio di codice blocca l'icona del mouse dell'utente dopo un secondo, quindi Studio stampa il mouse delta ogni volta che l'utente muove il Topo, or mouse as computer mouse:


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)

I pulsanti predefiniti di Roblox

Roblox fornisce le impostazioni predefinite per tutte le esperienze. Questi sono gli input più comuni utilizzati per il movimento, il controllo della fotocamera e l'interazione ambientale di base. Escluse le impostazioni riservate, puoi utilizzare ContextActionService per creare legami cross-piattaforma che priorizzano più legami a un'azione singola, come descritti in Contesto-Dependenti input .

Enum.CoreGuiType funzionalità, come la dello zaino o della chat , hanno una lista di input predefiniti aggiuntivi. Non puoi sovrascrivere input predefiniti come 0> Esc0> (menù Roblox) o Enum.CoreGuiType3> (Console di sviluppatore).

Questi pulsanti sono predefiniti Roblox, ma puoi sovrascriverli con script personalizzati. La maggior parte degli utenti Roblox è familiare con questi Controlli, quindi dovresti sovrascriverli solo in casi specifici.

InserimentiAzione
WSposta avanti
SSposta Indietro
ASposta la sinistra
DSposta la destra
Barra spaziatriceSalta
Ruota la fotocamera a sinistra o a destra
Pulsante destro del mouse Quando viene premuto, trascinando il mouse si muove la vista della telecamera
Ruota di scorrimento del mouse IOAumenta o diminuisci lo zoom della fotocamera
Spostamento di pixelizzazione ]Attiva/disattiva la blocca del mouse se EnableMouseLockOption è abilitata