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.
Sfida
FacileLa fionda si carica mentre tieni premuto Space e indica la carica al rilascio.
- In
Update(), mentreInput.GetKey(KeyCode.Space)è true, aggiungiTime.deltaTimeacharge. - Quando si verifica
Input.GetKeyUp(KeyCode.Space), registra"Charge: " + charge, poi impostachargea 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
1Nozioni di base di C# in Unity
Ciao, UnityVariabiliI numeri decimali richiedono una fTesto nella ConsoleVariabili che ricordanoIf ed ElseConfrontare i numeriRipasso: il collezionista di monete7Cicli e metodi
Ripeti con forCicli annidatiScrivere un metodoMetodi che restituiscono valoriArrayRiepilogo: scala10Trovare gli oggetti
Trovare per nomeTagTrovare per tipoI riferimenti battono la ricercaIl null di UnityRipasso: la moneta più vicina13Progetto: Schiva i blocchi
Il corridoreBlocchi dal cielo2Fallo muovere
Posiziona il cuboMuovilo a ogni frameRuotalo ogni secondoGuidalo con i tastiRiepilogo: guida il cubo5Vettori
Somma di vettoriDirezioniSpazio locale e spazio mondoVelocità diagonaleDistanza tra gli oggettiVector3 è una structRiepilogo: pilota di droni8GameObject e componenti
Riferimenti nell'InspectorOttenere un componenteComponenti mancantiAggiungere un componenteRequireComponentMostrare e nascondereRiepilogo: interruttore della luce3L’Inspector
Campi dell’InspectorSerializeFieldNumeri decimali e MathfAttributi dell’InspectorRiepilogo: ascensore6Trasformazioni e gerarchia
Genitori e figliIssare la bandieraScalaOsservare gli oggettiMuoversi verso un puntoRiepilogo: Luna in orbita9Progetto: Acchiappa la stella
Il raccoglitoreUna stella cadente12Il ciclo di vita dello script
Awake e StartUpdate e LateUpdateOnEnable e OnDisableL'ordine del ciclo di vitaRiepilogo: Lifecycle LoggerEsercitati da solo: Playground Unity