Enfoncé, maintenu, relâché
Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 12 sur 67.
Unity peut te donner trois informations différentes sur une touche, et chacune est interrogée dans Update() :
Input.GetKeyDown(KeyCode.Space): la barre d’espace a-t-elle été enfoncée pendant cette image ? C’est vrai sur une seule image par pression.Input.GetKey(KeyCode.Space): la barre d’espace est-elle enfoncée en ce moment ? C’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 ? C’est vrai sur une seule image, au moment où la touche est relâchée.
Maintiens la barre d’espace pendant une demi-seconde à 60 images par seconde : GetKey est vrai sur 30 images, GetKeyDown sur la première d’entre elles et GetKeyUp sur l’image qui suit la dernière. Un canon qui tire une seule fois par pression vérifie GetKeyDown ; avec GetKey, une pression déclencherait 30 tirs :
public int shots = 0;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
shots++;
Debug.Log("Shots fired: " + shots);
}
}GetKeyUp sert à gérer ce qui se passe quand le joueur relâche la touche, par exemple la fin d’un sprint. Les trois méthodes ne répondent 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 : charge augmente de 1 pour chaque seconde pendant laquelle la barre d’espace est maintenue enfoncée, et n’augmente pas lorsqu’elle ne l’est pas. Lorsque la barre d’espace est relâchée, affiche Charge: suivi de la charge (par exemple Charge: 1.5), puis remets charge à 0 pour le prochain tir.
Appuie sur Play, maintiens la barre d’espace enfoncée puis relâche-la, et observe la Console. Appuie ensuite sur Check.
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.
// Lorsque Space est relâchée : affiche charge dans le journal, puis remets-la à 0.
}
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Les bases du scripting dans Unity
1Votre premier script
Bonjour, UnityPlacez le cubeBouger à chaque imageTourner chaque secondeDirigez avec les touchesRécapitulatif : conduisez le cube4Vecteurs
Addition de vecteursDirectionsEspaces local et mondeVitesse diagonaleDistance entre les objetsVector3 est une structRécapitulatif : pilote de drone7Projet : Attrape l’étoile
L’attrapeurUne étoile qui tombe2L’inspecteur
Champs de l’inspecteurSerializeFieldNombres flottants et MathfAttributs de l’inspecteurRécapitulatif : ascenseur5Transformations et hiérarchie
Parents et enfantsÉchelleRegarder les objetsSe déplacer vers un pointRécapitulatif : Lune en orbite8Rechercher des objets
Rechercher par nomTagsRechercher par typeLes références plutôt que FindLe null de UnityRécapitulatif : la pièce la plus proche11Projet : Esquivez les blocs
Le coureurBlocs qui tombent6GameObjects et composants
Références dans l’InspectorObtenir un composantComposants manquantsAjouter un composantRequireComponentAfficher et masquerRécapitulatif : interrupteur