Appuyé pendant cette frame
Fait partie de la section Créer de vrais jeux du Journey Unity de Coddy. Leçon 46 sur 60.
isPressed répond à la question « est-il enfoncé maintenant ? » à chaque image pendant qu'une touche ou un bouton est maintenu. Pour déclencher une action une seule fois par pression, un contrôle fournit deux autres réponses : wasPressedThisFrame vaut true uniquement pendant l'image où la touche ou le bouton est enfoncé, et wasReleasedThisFrame uniquement pendant l'image où il est relâché. Ces propriétés remplacent Input.GetKeyDown et Input.GetKeyUp, ainsi que GetMouseButtonDown et GetMouseButtonUp. Ce tampon en caoutchouc s'abaisse lorsque le bouton de la souris est enfoncé et se relève lorsqu'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 abaisse le tampon une fois avant de le relever une 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 manière : Keyboard.current.spaceKey.wasPressedThisFrame vaut true une fois par pression sur la barre d'espace.
Défi
MoyenFais démarrer le sprinter avec la barre d’espace : il s’accroupit en descendant, puis court en remontant.
- Dans
Update(), lorsque!runningetKeyboard.current.spaceKey.wasPressedThisFramesont vrais : définisset, déplace-toi vers le bas decrouch, puis consigneSet. - Lorsque
setest vrai et quewasReleasedThisFrameest vrai : effaceset, définisrunning, déplace-toi vers le haut decrouch, puis consigneGo!. - Tant que
runningest vrai, déplace-toi le long de l’axe +z àspeedunités par seconde.
Appuie sur « Jouer », maintiens la barre d’espace enfoncée puis relâche-la : Set, puis Go! dans la Console. Ensuite, appuie sur « Vérifier ».
Essayez vous-même
using UnityEngine;
using UnityEngine.InputSystem;
public class Sprinter : MonoBehaviour
{
public float speed = 6f;
public float crouch = 0.3f;
private bool set;
private bool running;
void Update()
{
// À l’appui sur Space : s’accroupir et afficher Set. Au relâchement de Space : se relever, afficher Go! et courir.
}
}
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 niveau2Boutons 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 : jeu de 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éeEntraînez-vous par vous-même : Playground Unity