Appuyé, maintenu, relâché
Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 19 sur 85.
Unity peut te donner trois informations différentes sur une touche, et chacune est demandée dans Update() :
Input.GetKeyDown(KeyCode.Space): la barre d’espace a-t-elle été pressée pendant cette image ? Le résultat est vrai pendant une seule image par pression.Input.GetKey(KeyCode.Space): la barre d’espace est-elle enfoncée maintenant ? Le résultat est vrai à chaque image tant que la barre d’espace est maintenue enfoncée.Input.GetKeyUp(KeyCode.Space): la barre d’espace a-t-elle été relâchée pendant cette image ? Le résultat est vrai pendant une seule image, au moment où la touche est relâchée.
Maintiens la barre d’espace enfoncée pendant une demi-seconde à 60 images par seconde : GetKey renvoie vrai pendant 30 images, GetKeyDown pendant la première, et GetKeyUp pendant l’image qui suit la dernière. Un canon qui tire une fois par pression utilise GetKeyDown ; avec GetKey, une seule pression déclencherait 30 tirs :
public int shots = 0;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
shots++;
Debug.Log("Shots fired: " + shots);
}
}GetKeyUp sert à détecter ce qui se passe lorsque le joueur relâche la touche, par exemple la fin d’un sprint. Les trois ne donnent une réponse que pour l’image actuelle, c’est pourquoi elles doivent être utilisées dans Update() : cette méthode s’exécute à chaque image, tandis que Start() ne s’exécute qu’une fois et manquerait presque toutes les pressions.
Défi
FacileLe lance-pierre se charge tant que la barre d’espace est maintenue enfoncée et affiche la charge au relâchement.
- Dans
Update(), tant queInput.GetKey(KeyCode.Space)est vrai, ajouteTime.deltaTimeàcharge. - Lors de
Input.GetKeyUp(KeyCode.Space), affiche"Charge: " + chargedans le journal, puis définischargesur 0.
Appuie sur « Jouer », maintiens la barre d’espace enfoncée puis relâche-la : la Console affiche une ligne comme Charge: 1.5. Ensuite, clique sur « Vérifier ».
Essayez vous-même
using UnityEngine;
public class Slingshot : MonoBehaviour
{
float charge = 0f;
void Update()
{
// Tant que Space est maintenue enfoncée : charge augmente de 1 chaque seconde.
// Quand Space est relâchée : affiche la valeur de charge dans le journal, puis remets-la à 0.
}
}
Toutes les leçons de Les bases du scripting dans Unity
1Les bases de C# dans Unity
Bonjour, UnityVariablesLes nombres décimaux ont besoin d’un fDu texte dans la consoleDes variables qui mémorisentSi et sinonComparer des nombresRécapitulatif : le collecteur de pièces7Boucles et méthodes
Répéter avec forBoucles imbriquéesÉcrire une méthodeMéthodes qui renvoient une réponseTableauxRécapitulatif : escalier10Rechercher des objets
Rechercher par nomTagsRechercher par typeLes références plutôt que la rechercheLe null de UnityRécapitulatif : la pièce la plus proche13Projet : Éviter les blocs
Le coureurDes blocs tombent du ciel2Mettez-le en mouvement
Placez le cubeDéplacez-le à chaque frameTournez chaque secondeDirigez avec les touchesRécapitulatif : pilotez le cube5Vecteurs
Additionner des vecteursDirectionsEspace local et espace globalVitesse diagonaleDistance entre des objetsVector3 est une structureRécapitulatif : pilote de drone8GameObjects et composants
Références dans l’InspectorObtenir un composantComposants manquantsAjouter un composantRequireComponentAfficher et masquerRécapitulatif : interrupteur3L’inspecteur
Champs de l’inspecteurSerializeFieldFlottants et MathfAttributs de l’inspecteurRécapitulatif : ascenseur6Transformations et hiérarchie
Parents et enfantsHissez le drapeauÉchelleRegarder les objetsSe déplacer vers un pointRécapitulatif : la lune en orbite9Projet : Attrape l’étoile
Le receveurUne étoile filanteEntraînez-vous par vous-même : Playground Unity