Menu
CoddyTech

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.

challenge icon

Défi

Moyen

Le 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 crouch unités vers le bas, et Set est consigné.
  • Lorsqu’il relâche ensuite la barre d’espace, le coureur se redresse (crouch unités vers le haut), Go! est consigné et la course commence : à partir de là, il court le long de l’axe +z à speed unités par seconde.
  • Maintenir la barre d’espace enfoncée consigne Set une 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.
    }
}
quiz iconTestez-vous

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