Una grande percentuale di sessioni Roblox viene giocata su dispositivi con mouse e tastiera, quindi è importante supportare correttamente questi input quando si progetta 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 gli input mobile e gamepad.
Per comodità, Roblox imposta gli input del mouse e della tastiera più comuni come bindaggi predefiniti che, a eccezione dei bindaggi riservati, puoi sovrascrivere.
Input del mouse generico
Come tutti gli input del dispositivo, puoi catturare gli input del mouse utilizzando UserInputService .Questo servizio fornisce un modo scalabile per catturare i cambiamenti di input e gli stati di input del dispositivo per più dispositivi contemporaneamente.Roblox supporta anche la rilevazione dell'input del mouse legacy con PlayerMouse e ClickDetectors .
Inoltre, puoi usare ContextActionService per gestire più azioni su un singolo input a seconda del contesto, come l'uso di uno strumento vicino a una roccia o l'apertura di una porta all'interno di un Costruire.Vedi Input dipendenti dal contesto per informazioni su come impostare azioni di input specifiche del contesto.
Il seguente LocalScript, quando viene posizionato in StarterPlayerScripts, cattura i clic del mouse e stampa la posizione del mouse nella finestra Output:
LocalScript - Output Mouse Click e Posizione
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Prima controlla se il "processedEvent" è 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 era 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)
Input della tastiera generico
Per accedere agli eventi della tastiera, usa l'evento UserInputService.InputEnded per tracciare ogni volta che termina qualsiasi input o altro input.Simile agli eventi del mouse , questo evento funziona solo all'interno di un LocalScript.
Il seguente LocalScript, quando viene posizionato in StarterPlayerScripts , stampa il Enum.KeyCode di una pressata chiave nella finestra Output:
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Prima controlla se il "processedEvent" è 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 era 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)
Input dell'utente
L'input del mouse e della tastiera funziona automaticamente con elementi interattivi dell'interfaccia utente come TextButtons e ImageButtons , così come TextBoxes che cattura l'input del testo come un campo in una forma.
Per ulteriori informazioni sulla creazione di oggetti di input di testo e pulsanti, vedi Pulsanti e Input di testo.
Modalità di movimento del personaggio
Puoi impostare schemi di controllo del movimento del mouse e della tastiera per le esperienze Roblox cambiando i valori di StarterPlayer.DevComputerMovementMode a uno dei Seguendo:
Opzione | Descrizione |
---|---|
Selezione dell'utente | Consente agli utenti di scegliere il loro schema di controllo desiderato dal menu in-experience. Questa opzione è abilitata per impostazione predefinita. |
TastieraMouse | Gli utenti possono premere WASD per muoversi e Space per Salta.Questa è la configurazione predefinita per gli utenti della tastiera e del mouse per la configurazione Selezione dell'utente . |
Clicca per muoverti | Gli utenti possono solo muoversi attraverso l'esperienza facendo clic con il tasto destro su una posizione target. |
Scrivibile | Disabilita tutti i controlli predefiniti e ti consente di legare i tuoi controlli propri. |
Icone del mouse
Puoi personalizzare l'aspetto e il comportamento dell'icona del mouse di un utente all'interno della tua esperienza per creare uno stile coerente per tutti gli elementi UI.Questo include il cambio temporaneo dell'icona del mouse dell'utente in situazioni specifiche, come l'hovering su un pulsante.
Cambia l'Icona
Puoi cambiare l'icona del mouse dell'utente in un LocalScript impostando la proprietà MouseIcon in UserInputService a un ID risorsa Roblox personalizzato.Ad esempio, i seguenti LocalScript cambiano l'icona del mouse predefinita dell'utente in un cerchio con un punto blu al centro:
local UserInputService = game:GetService("UserInputService")UserInputService.MouseIcon = "rbxassetid://3400146391"
Nascondi l'Icona
Puoi nascondere l'icona del mouse dell'utente impostando il UserInputService.MouseIconEnabled a false in un LocalScript .Ad esempio, il seguente codice cambia l'icona del mouse da visibile a invisibile e torna ogni due secondi:
local UserInputService = game:GetService("UserInputService")while true dotask.wait(2)UserInputService.MouseIconEnabled = falsetask.wait(2)UserInputService.MouseIconEnabled = trueend
Blocca l'Icona
Puoi bloccare la posizione dell'Iconadel mouse sulla schermata utilizzando con un valore di o , quindi sbloccarla di nuovo con un valore di .
Se l'icona del mouse di un utente è bloccata in una posizione, UserInputService.InputChanged ancora si attiva quando l'utente muove il Topo, or mouse as computer mouse, passando a distanza l'area 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 delta del mouse 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)
Legami predefiniti di Roblox
Roblox fornisce le impostazioni predefinite per le chiavi per tutte le esperienze.Questi sono gli input più comuni utilizzati per il movimento, il controllo della fotocamera e l'interazione ambientale di base.Escludendo le bindings riservate, puoi usare ContextActionService per creare legami cross-piattaforma che prioritizzino più legami a un'unica azione, come descritto in input contestuali dipendenti dal contesto.
Enum.CoreGuiType caratteristiche, come il zaino o chat , hanno una lista di input predefiniti aggiuntivi.Non puoi sovrascrivere gli input riservati come Esc (menù Roblox) o F9 (Console del sviluppatore).
Queste bindings sono predefinite di Roblox, ma puoi annullarle con script personalizzati.La maggior parte degli utenti di Roblox è familiare con questi Controlli, quindi dovresti sostituirli solo in casi specifici.
Ingressi | Azione |
---|---|
W↑ | Muoviti avanti |
S↓ | Torna Indietro |
A | Sposta a sinistra |
D | Sposta a destra |
Spacebar | Salta |
←→ | Ruota la fotocamera a sinistra o a destra |
Pulsante destro del mouse | Quando viene premuto, trascinando il mouse si muove la vista della fotocamera |
Ruota di scorrimento del mouse IO | Aumenta o diminuisci lo zoom della fotocamera |
Shift | Attiva/disattiva il blocco del mouse se EnableMouseLockOption è abilitato |