Menu
CoddyTech

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.

challenge icon

Défi

Moyen

Fais démarrer le sprinter avec la barre d’espace : il s’accroupit en descendant, puis court en remontant.

  1. Dans Update(), lorsque !running et Keyboard.current.spaceKey.wasPressedThisFrame sont vrais : définis set, déplace-toi vers le bas de crouch, puis consigne Set.
  2. Lorsque set est vrai et que wasReleasedThisFrame est vrai : efface set, définis running, déplace-toi vers le haut de crouch, puis consigne Go!.
  3. Tant que running est vrai, déplace-toi le long de l’axe +z à speed unité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

Entraînez-vous par vous-même : Playground Unity