Menu
CoddyTech

Premuto in questo frame

Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 45 di 56.

isPressed risponde «è premuto adesso?» a ogni fotogramma in cui il tasto o il pulsante resta premuto. Per un'azione che dovrebbe avvenire una sola volta per pressione, un controllo offre altre due risposte: wasPressedThisFrame è true solo nel fotogramma in cui il tasto o il pulsante viene premuto, mentre wasReleasedThisFrame lo è solo nel fotogramma in cui viene rilasciato. Sostituiscono Input.GetKeyDown e Input.GetKeyUp, nonché GetMouseButtonDown e GetMouseButtonUp. Questo timbro scende quando si preme il pulsante del mouse e si solleva quando lo si rilascia:

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 mantenuto per mezzo secondo registra Stamp 1 una sola volta, sposta il timbro verso il basso una volta e poi di nuovo verso l'alto una volta. Con isPressed nel primo if, lo stesso clic registrerebbe circa 30 timbri e farebbe sprofondare il timbro di 15 unità nella scrivania. I tasti funzionano allo stesso modo: Keyboard.current.spaceKey.wasPressedThisFrame è true una sola volta per ogni pressione della barra spaziatrice.

challenge icon

Sfida

Medio

Il velocista attende nei blocchi di partenza. Il suo script ha speed (6) e crouch (0.3).

  • Quando Space viene premuto, il corridore si accovaccia nei blocchi: si sposta verso il basso di crouch unità e viene registrato Set.
  • Quando Space viene rilasciato, dopo averlo premuto, il corridore si rialza (crouch unità verso l'alto), viene registrato Go! e la corsa inizia: da quel momento corre lungo +z a speed unità al secondo.
  • Tenendo premuto Space, Set viene registrato una sola volta, non a ogni frame. Una volta che il corridore è in corsa, Space non fa più nulla.

Leggi Space con Keyboard.current. Premi Play, tieni premuto Space e rilascialo, poi premi Check.

Provalo tu

using UnityEngine;
using UnityEngine.InputSystem;

public class Sprinter : MonoBehaviour
{
    public float speed = 6f;
    public float crouch = 0.3f;

    void Update()
    {
        // Space premuto: accovacciati e registra Set. Space rilasciato: alzati, registra Go! e corri.
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Creare veri giochi