Appuyé pendant cette frame
Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 45 sur 56.
isPressed répond à la question « est-ce enfoncé maintenant ? » à chaque image pendant toute la durée d'un appui. Pour déclencher une action une seule fois par appui, un contrôle propose deux autres réponses : wasPressedThisFrame vaut true uniquement à l'image où la touche ou le bouton a été enfoncé, et wasReleasedThisFrame uniquement à l'image où il a été relâché. Ils remplacent Input.GetKeyDown et Input.GetKeyUp, ainsi que GetMouseButtonDown et GetMouseButtonUp. Ce tampon en caoutchouc s'abaisse quand on appuie sur le bouton de la souris et se relève quand on le relâche :
using UnityEngine;
using UnityEngine.InputSystem;
public class Stamp : MonoBehaviour
{
public float drop = 0.5f;
private int stamps;
void Update()
{
Mouse mouse = Mouse.current;
if (mouse.leftButton.wasPressedThisFrame)
{
transform.position += Vector3.down * drop;
stamps++;
Debug.Log("Stamp " + stamps);
}
if (mouse.leftButton.wasReleasedThisFrame)
{
transform.position += Vector3.up * drop;
}
}
}Un clic maintenu pendant une demi-seconde affiche Stamp 1 une seule fois, et le tampon s'abaisse puis remonte une seule fois. Avec isPressed dans le premier if, le même clic afficherait environ 30 tampons et enfoncerait le tampon de 15 unités dans le bureau. Les touches fonctionnent de la même façon : Keyboard.current.spaceKey.wasPressedThisFrame vaut true une fois par appui sur la barre d'espace.
Défi
MoyenLe sprinteur attend dans les starting-blocks. Son script a une speed de 6 et un crouch de 0.3.
- Lorsque la barre d’espace est enfoncée, le coureur s’accroupit dans les starting-blocks : il se déplace de
crouchunités vers le bas, etSetest consigné. - Lorsqu’il relâche ensuite la barre d’espace, le coureur se redresse (
crouchunités vers le haut),Go!est consigné et la course commence : à partir de là, il court le long de l’axe +z àspeedunités par seconde. - Maintenir la barre d’espace enfoncée consigne
Setune seule fois, et non à chaque image. Une fois que le coureur est en train de courir, la barre d’espace ne fait plus rien.
Lisez la barre d’espace avec Keyboard.current. Appuyez sur Play, maintenez la barre d’espace enfoncée puis relâchez-la, puis cliquez sur Check.
Essayez vous-même
using UnityEngine;
using UnityEngine.InputSystem;
public class Sprinter : MonoBehaviour
{
public float speed = 6f;
public float crouch = 0.3f;
void Update()
{
// Appui sur Space : s’accroupir et afficher Set. Relâchement de Space : se relever, afficher Go! et courir.
}
}
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