Un large pourcentage de sessions Roblox sont jouées sur des appareils avec une souris et un clavier, il est donc important de prendre en charge correctement ces entrées lors de la conception d'une expérience pour un large public.Une fois que vous êtes à l'aise avec les entrées souris et clavier, rendez votre expérience compatible sur plusieurs plates-formes en configurant les entrées mobiles et gamepad.
Pour convenir, Roblox définit les entrées de souris et de clavier les plus courantes comme les raccourcis par défaut que vous pouvez écraser, sauf les raccourcis réservés.
Entrée de souris générique
Comme toutes les entrées d'appareil, vous pouvez capturer les entrées de la souris en utilisant UserInputService .Ce service fournit une façon évolutive de capturer les modifications d'entrée et les états d'entrée des appareils pour plusieurs appareils à la fois.Roblox prend également en charge la détection de l'entrée de souris héritée avec PlayerMouse et ClickDetectors .
En outre, vous pouvez utiliser ContextActionService pour gérer plusieurs actions sur une seule entrée en fonction du contexte, telles que l'utilisation d'un outil près d'une roche ou l'ouverture d'une porte lorsqu'elle se trouve à l'intérieur d'un construction.Voir entrées dépendantes du contexte pour des informations sur la définition d'actions d'entrée spécifiques au contexte.
Le suivant LocalScript, lorsqu'il est placé dans StarterPlayerScripts, capture les clics de souris et imprime la position de la souris dans la fenêtre Sortie:
LocalScript - Sortir le clic de souris et la position
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Vérifiez d'abord si le "processedEvent" est vrai
-- Cela indique qu'un autre script a déjà traité l'entrée, donc celle-ci est ignorée
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 du clavier, utilisez l'événement UserInputService.InputEnded pour suivre chaque fois que toute saisie ou autre entrée se termine.Semblable à événements de 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 Sortie:
local UserInputService = game:GetService("UserInputService")
local function onInputEnded(inputObject, processedEvent)
-- Vérifiez d'abord si le "processedEvent" est vrai
-- Cela indique qu'un autre script a déjà traité l'entrée, donc celle-ci est ignorée.
if processedEvent then return end
-- Ensuite, vérifiez que l'entrée était un événement 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'interface utilisateur
L'entrée de la souris et du clavier fonctionne automatiquement avec des éléments d'interface utilisateur interactifs tels que TextButtons et ImageButtons , ainsi que TextBoxes qui capture l'entrée du texte comme un champ dans un formulaire.
Pour plus d'informations sur la création de boutons et d'objets d'entrée de texte, voir boutons et entrée de texte.
Modes de mouvement du personnage
Vous pouvez définir des schémas de contrôles de mouvement de la souris et du clavier pour les expériences Roblox en modifiant les valeurs de StarterPlayer.DevComputerMovementMode à l'une des suivre:
Aoption | Avertissement |
---|---|
Choix de l'utilisateur | Permet aux utilisateurs de choisir leur schéma de contrôle souhaité dans le menu expérience. Cette option est activée par défaut. |
Souris de clavier | Les utilisateurs peuvent appuyer sur WASD pour se déplacer et Space sauter.C'est le paramètre par défaut pour les utilisateurs de clavier et de souris pour le paramètre choix de l'utilisateur . |
Cliquez pour déplacer | Les utilisateurs ne peuvent se déplacer dans l'expérience que en cliquant avec le bouton droit sur une localisation 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 de l'icône de la souris d'un utilisateur dans votre expérience pour créer un style cohérent pour tous vos éléments d'interface utilisateur.Cela inclut de modifier temporairement l'icône de la souris de l'utilisateur dans des circonstances spécifiques, telles que la survie au-dessus d'un bouton.
Changer l'icône
Vous pouvez modifier l'icône de la souris de l'utilisateur dans un LocalScript en définissant la propriété MouseIcon en UserInputService à une ID de ressource Roblox personnalisée.Par exemple, les modifications suivantes LocalScript modifient l'icône de souris par défaut de l'utilisateur en cercle avec un point bleu au milieu :
local UserInputService = game:GetService("UserInputService")UserInputService.MouseIcon = "rbxassetid://3400146391"
Cacher l'icône
Vous pouvez masquer 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 de visible à invisible et de retour toutes les deux secondes :
local UserInputService = game:GetService("UserInputService")while true dotask.wait(2)UserInputService.MouseIconEnabled = falsetask.wait(2)UserInputService.MouseIconEnabled = trueend
Verrouiller l'icône
Vous pouvez verrouiller la position de l'icône de la souris sur l'écran en utilisant avec une valeur de ou , puis la déverrouiller à nouveau avec une valeur de .
Si l'icône de la souris d'un utilisateur est verrouillée dans une position, UserInputService.InputChanged tire toujours lorsque l'utilisateur déplace la souris, en passant à distance la position à laquelle la souris s'est déplacée.Par exemple, l'exemple de code suivant verrouille l'icône de la souris de l'utilisateur après une seconde, puis Studio imprime le délai de la souris chaque fois que 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)
Liaisons par défaut de Roblox
Roblox fournit des raccourcis clavier 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 seule action, comme décrit dans entrées contextuelles dépendantes.
Enum.CoreGuiType les fonctionnalités, telles que le sac à dos ou le 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 Esc (menu Roblox) ou F9 (console de développeur).
Ces liens sont les défauts de Roblox, mais vous pouvez les annuler avec des scripts personnalisés.La plupart des utilisateurs de Roblox sont familiers avec ces contrôles, vous ne devez donc les annuler que dans des cas spécifiques.
Entrées | Action |
---|---|
W↑ | Avancer |
S↓ | retour |
A | Déplacer à gauche |
D | Déplacer à droite |
Spacebar | Saut |
←→ | Faire pivoter la caméra à gauche ou à droite |
Bouton droit de la souris | Lorsque vous appuyez, faire glisser 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 |
Shift | Activez la verrouillage de la souris si EnableMouseLockOption est activé |