Menu
CoddyTech

Premuto, tenuto, rilasciato

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 12 di 67.

Unity può dirti tre cose diverse riguardo a un tasto, e ciascuna viene richiesta in Update():

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

Tieni premuto Space per mezzo secondo a 60 frame al secondo: GetKey è true in 30 frame, GetKeyDown nel primo di questi e GetKeyUp nel frame successivo all'ultimo. Un cannone che spara una volta per pressione usa GetKeyDown; con GetKey, una pressione sparerebbe 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, ad esempio quando termina uno scatto. Tutti e tre restituiscono una risposta solo per il frame corrente, perciò vanno usati in Update(): viene eseguito a ogni frame, mentre Start() viene eseguito una sola volta e si perderebbe quasi ogni pressione.

challenge icon

Sfida

Facile

La fionda si carica mentre tieni premuto Space: charge aumenta di 1 per ogni secondo in cui Space è tenuto premuto e non aumenta quando non lo è. Quando rilasci Space, registra Charge: seguito dalla carica (per esempio Charge: 1.5), poi reimposta charge a 0 per il tiro successivo.

Premi Play, tieni premuto e rilascia Space, quindi osserva la Console. Poi premi Check.

Provalo tu

using UnityEngine;

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

    void Update()
    {
        // Finché Space è premuto: charge aumenta di 1 ogni secondo.
        // Quando Space viene rilasciato: registra il valore di charge, poi riportalo a 0.
    }
}
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 Fondamenti di scripting in Unity