Clavier et souris
Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 44 sur 56.
Le système Input System attribue un objet à chaque périphérique. Keyboard.current est le clavier, et chaque touche est un contrôle portant un nom : spaceKey, aKey, upArrowKey, ou Keyboard.current[Key.Space] pour accéder à n’importe quelle touche par sa valeur Key. Mouse.current est la souris, avec leftButton, rightButton et position. La propriété isPressed d’un contrôle vaut true à chaque image où il est maintenu enfoncé, comme c’était le cas avec Input.GetKey. Ce sous-marin plonge et remonte avec les flèches et allume son projecteur tant que le bouton de la souris est maintenu enfoncé :
using UnityEngine;
using UnityEngine.InputSystem;
public class Submarine : MonoBehaviour
{
public float diveSpeed = 2f;
public Light searchlight;
void Update()
{
Keyboard keyboard = Keyboard.current;
if (keyboard == null) return; // aucun clavier connecté
if (keyboard.downArrowKey.isPressed)
transform.position += Vector3.down * diveSpeed * Time.deltaTime;
if (keyboard.upArrowKey.isPressed)
transform.position += Vector3.up * diveSpeed * Time.deltaTime;
searchlight.enabled = Mouse.current != null && Mouse.current.leftButton.isPressed;
}
}current est le périphérique utilisé en dernier, et vaut null lorsqu’il n’y en a aucun : un téléphone ou une console peut ne pas avoir de clavier, et les vérifications de nullité empêchent le script de provoquer une exception dans ce cas. Le clavier n’a pas d’axes, donc la flèche vers le bas et S sont deux touches distinctes : pour qu’un sous-marin plonge aussi avec S, on teste keyboard.downArrowKey.isPressed || keyboard.sKey.isPressed. Mouse.current.position.ReadValue() renvoie la position du pointeur sous forme de Vector2, en pixels à l’écran à partir du coin inférieur gauche, comme Input.mousePosition.
Défi
MoyenFais voler la montgolfière avec l’Input System. Son script contient drift (2), rise (3), sink (1), groundY (2) et flame, la flamme du brûleur sous le ballon.
- Lorsque la flèche droite ou D est maintenue enfoncée, le ballon dérive vers la droite (le long de +x) à
driftunités par seconde ; lorsque la flèche gauche ou A est maintenue enfoncée, il dérive vers la gauche. - Le brûleur est allumé tant que la barre d’espace ou le bouton gauche de la souris est maintenu enfoncé. Affiche
flameuniquement lorsqu’il est allumé. - Lorsque le brûleur est allumé, le ballon monte à
riseunités par seconde. Lorsqu’il est éteint, il descend àsinkunités par seconde, sans jamais descendre sousgroundY.
Utilise Keyboard.current et Mouse.current. Ce projet est configuré comme un nouveau projet Unity 6 (Active Input Handling: Input System Package) ; la classe Input déclenche donc ici une InvalidOperationException. Appuie sur Play et fais voler le ballon, puis clique sur Check.
Essayez vous-même
using UnityEngine;
using UnityEngine.InputSystem;
public class Balloon : MonoBehaviour
{
public float drift = 2f;
public float rise = 3f;
public float sink = 1f;
public float groundY = 2f;
public GameObject flame;
void Update()
{
// Dérive avec les flèches ou A et D, active la flamme avec Space ou la souris
}
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Créer de vrais jeux
1Texte à l’écran
Canvas et texteAfficher le scoreFormater les nombresUn compte à reboursRécapitulatif : compteur de vitesse4Scènes et niveaux
Charger une scèneRedémarrer le niveauNiveau suivantConserver entre les scènesRécapitulatif : sélection du niveau7Contrôle du temps
Mettre en pause avec timeScaleRalentiTemps non mis à l’échelleRécapitulatif : Bullet Time10Projet : jeu de plateforme en 3D
Le parcoursPlateformes mobiles2Boutons et écrans
Boutons et onClickLambdasRelier les éléments dans l’InspectorActiver et désactiver les panneauxBarres de santéRécapitulatif : boutique d’améliorations5Sauvegarder avec PlayerPrefs
Enregistrer un nombreCharger avec une valeur par défautMeilleur scoreEnregistrer les paramètresRécapitulatif : les pièces à la banque3Le gestionnaire du jeu
Un seul script gère le jeuLe SingletonLes états du jeuBasculer selon l’étatRécapitulatif : gestionnaire de manche6Projet : course sans fin
Trois voiesObstacles en vue9Le nouveau système d’entrée
Deux systèmes d’entréeClavier et sourisAppuyé pendant cette frameActions d’entréeRécapitulatif : changement de système d’entrée