Menu
CoddyTech

Premuto, tenuto, rilasciato

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 19 di 85.

Unity può dirti tre cose diverse su un tasto, e ognuna viene controllata in Update():

  • Input.GetKeyDown(KeyCode.Space): Space è stato premuto in questo frame? È vero in un solo frame per ogni pressione.
  • Input.GetKey(KeyCode.Space): Space è premuto in questo momento? È vero in ogni frame in cui Space viene tenuto premuto.
  • Input.GetKeyUp(KeyCode.Space): Space è stato rilasciato in questo frame? È vero in un solo frame, quando il tasto viene rilasciato.

Tieni premuto Space per mezzo secondo a 60 frame al secondo: GetKey è vero in 30 frame, GetKeyDown nel primo di questi e GetKeyUp nel frame successivo all'ultimo. Un cannone che spara una volta per pressione controlla GetKeyDown; con GetKey, una pressione farebbe sparare 30 colpi:

public int shots = 0;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        shots++;
        Debug.Log("Shots fired: " + shots);
    }
}

GetKeyUp serve per ciò che accade quando il giocatore rilascia il tasto, per esempio quando termina uno scatto. Tutti e tre restituiscono una risposta solo per il frame corrente, ed è per questo che vanno usati in Update(): viene eseguito a ogni frame, mentre Start() viene eseguito una sola volta e non rileverebbe quasi tutte le pressioni.

challenge icon

Sfida

Facile

La fionda si carica mentre tieni premuto Space e indica la carica al rilascio.

  1. In Update(), mentre Input.GetKey(KeyCode.Space) è true, aggiungi Time.deltaTime a charge.
  2. Quando si verifica Input.GetKeyUp(KeyCode.Space), registra "Charge: " + charge, poi imposta charge a 0.

Premi «Gioca», tieni premuto Space e rilascialo: la Console mostra una riga come Charge: 1.5. Poi premi «Verifica».

Provalo tu

using UnityEngine;

public class Slingshot : MonoBehaviour
{
    float charge = 0f;

    void Update()
    {
        // Finché si tiene premuto Space: charge aumenta di 1 ogni secondo.
        // Quando si rilascia Space: registra charge nel log, poi riportalo a 0.
    }
}

Tutte le lezioni di Fondamenti di scripting in Unity

Esercitati da solo: Playground Unity