Une grande partie des sessions Roblox est jouée sur des appareils avec une souris et un clavier, il est donc important de bien prendre en charge ces entrées lorsque vous concevez une expérience pour un large public. Une fois que vous êtes à l'aise avec les entrées de souris et de clavier, rendez votre expérience compatible sur plusieurs plates-formes en configurant mobile et gamepad entrées.
Pour la commodité, Roblox définit les entrées de souris et de clavier les plus courantes comme liens par défaut que, sauf les liens réservés, vous pouvez écraser.
Entrée de souris générique
Comme tous les entrants de l'appareil, vous pouvez capturer les entrées de la souris en utilisant UserInputService. Ce service fournit une façon échelonée de capturer les modifications d'entrée et les états d'entrée pour plusieurs appareils à la fois. Roblox prend également en charge la détection de la souris légendaire avec PlayerMouse et ClickDetectors.
De plus, vous pouvez utiliser ContextActionService pour gérer plusieurs actions sur un seul entrée en fonction du contexte, telles que l'utilisation d'un outil lorsqu'il est près d'une roche, ou l'ouverture d'une porte lorsqu'il est à l'intérieur d'un construction. Voir entrées contextuelles dépendantes pour plus d'informations sur le paramètre d'entrée contextuel.
Le suivant LocalScript, lorsqu'il est placé dans StarterPlayerScripts, capture les clics de la souris et imprime la position de la souris dans la fenêtre Sortie :
LocalScript - Sortie de la souris et de la position
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Vérifiez d'abord si « événement traité » est vrai
-- Ceci indique qu'un autre script avait déjà traité l'entrée, donc celui-ci est ignoré
if processedEvent then return end
-- Ensuite, vérifiez que l'entrée était un événement de souris
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)
Entrée de clavier générique
Pour accéder aux événements clavier, utilisez l'événement UserInputService.InputEnded pour suivre chaque fois que toute touche ou autre fin d'entrée se termine. Semblable aux événements souris, cet événement ne fonctionne que dans un LocalScript .
Le suivant LocalScript, lorsqu'il est placé dans StarterPlayerScripts, imprime le Enum.KeyCode d'une touche appuyée dans la fenêtre 1> sortie1> :
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Vérifiez d'abord si « événement traité » est vrai
-- Ceci indique qu'un autre script avait déjà traité l'entrée, soit ignorée.
if processedEvent then return end
-- Ensuite, vérifiez que l'entrée était un événement de clavier
if inputObject.UserInputType == Enum.UserInputType.Keyboard then
print("A key was released: " .. inputObject.KeyCode.Name)
end
end
UserInputService.InputEnded:Connect(onInputEnded)
Entrée de l'utilisateur
L'entrée de la souris et du clavier fonctionne automatiquement avec des éléments d'interface interactive tels que TextButtons et ImageButtons , ainsi que TextBoxes qui capture l'entrée du texte comme un champ dans une forme.
Pour plus d'informations sur la création de boutons et d'objets d'entrée texte, voir Boutons et Entrée de texte .
Modes de déplacement du personnage
Vous pouvez configurer les contrôles de mouvement de la souris et du clavier pour les expériences Roblox en modifiant les valeurs de StarterPlayer.DevComputerMovementMode à l'un des suivre:
Option | Description |
---|---|
Choix de l'utilisateur | Permet aux utilisateurs de choisir leur schéma de contrôle souhaité dans le menu de l'expérience. Cette option est activée par défaut. |
Clavier de souris | Les utilisateurs peuvent appuyer sur WASD pour déplacer et 1> Espace1> pour sauter. Ce est le paramètre par défaut pour les utilisateurs de clavier et de souris pour le paramètre 4> UserChoice4>. |
Cliquez pour déplacer | Les utilisateurs ne peuvent déplacer que par le clic droit sur une position cible. |
Scriptable | Désactive tous les contrôles par défaut et vous permet de lier vos propres contrôles . |
Icônes de souris
Vous pouvez personnaliser l'apparence et le comportement d'une icône de souris dans votre expérience pour créer un style de cohésion dans tous vos éléments d'interface utilisateur. Cela inclut la modification temporaire de l'icône de souris dans des circonstances spécifiques, telles que le survol d'un bouton.
Changer l'icône
Vous pouvez modifier l'icône de la souris de l'utilisateur dans un LocalScript par la définition de la propriété MouseIcon dans UserInputService à un ID de ressource Roblox personnalisé. Par exemple, les suivantes modifications 2>Class.LocalScript2> modifient l'icône de la souris de
local UserInputService = game:GetService("UserInputService")UserInputService.MouseIcon = "rbxassetid://3400146391"
Cacher l'icône
Vous pouvez cacher l'icône de la souris de l'utilisateur en définissant le UserInputService.MouseIconEnabled à false dans un LocalScript. Par exemple, le code suivant change l'icône de la souris visible à invisible et à chaque deux secondes :
local UserInputService = game:GetService("UserInputService")while true dotask.wait(2)UserInputService.MouseIconEnabled = falsetask.wait(2)UserInputService.MouseIconEnabled = trueend
Verrouillage de l'icône
Vous pouvez verrouiller la position de l'icône de la souris à l'écran en utilisant UserInputService.MouseBehavior avec une valeur Enum.MouseBehavior ou LockCurrentPosition , puis le déverrouiller avec une valeur 1> Class.UserInputService.Default1> .
Si l'icône de la souris d'un utilisateur est verrouillée dans une position, UserInputService.InputChanged s'exécute toujours lorsque l'utilisateur déplace la souris, ce qui distance la souris a déplacée. Par exemple, le code suivant s'exécute lorsque l'utilisateur déplace la souris après un seconde, puis Studio imprime la souris delta lorsque l'utilisateur déplace sa souris :
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 liens par défaut
Roblox fournit des liens de clé par défaut pour toutes les expériences. Ce sont les entrées les plus courantes utilisées pour le mouvement, le contrôle de la caméra et l'interaction de l'environnement de base. En excluant les liens réservés, vous pouvez utiliser ContextActionService pour créer des liens cross-plateforme qui priorisent plusieurs liens à une action unique, comme décrit dans entrées contextuelles .
Enum.CoreGuiType fonctionnalités, telles que le sac à dos ou chat , ont une liste d'entrées par défaut supplémentaires. Vous ne pouvez pas écraser les entrées réservées telles que 0> Esc0> (Roblox menu) ou Enum.CoreGuiType3> (Console du développeur).
Ces liens sont des valeurs par défaut Roblox, mais vous pouvez les modifier avec des scripts personnalisés. La plupart des utilisateurs de Roblox sont familiers avec ces contrôles, vous devriez donc les modifier dans des cas spécifiques.
Entrées | Action |
---|---|
W↑ | Avance |
S↓ | retour |
A | Déplacer vers la gauche |
D | Déplacer vers la droite |
Barre d'espacement | Sauter |
←→ | Tournez la caméra vers la gauche ou la droite |
Bouton droit de la souris | Lorsqu'on appuie dessus, le déplacement de la souris déplace la vue de la caméra |
Roue de défilement de la souris IO | Zoomer la caméra vers l'intérieur ou l'extérieur |
Maj | Activer le verrouillage de la souris si EnableMouseLockOption est activé |