Gedrückt, gehalten, losgelassen
Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 19 von 85.
Unity kann dir drei verschiedene Dinge über eine Taste mitteilen, und nach jedem davon fragst du in Update():
Input.GetKeyDown(KeyCode.Space): Wurde die Leertaste in diesem Frame gedrückt? Das ist in einem Frame pro Tastendruck der Fall.Input.GetKey(KeyCode.Space): Ist die Leertaste gerade gedrückt? Das ist in jedem Frame der Fall, während die Leertaste gedrückt gehalten wird.Input.GetKeyUp(KeyCode.Space): Wurde die Leertaste in diesem Frame losgelassen? Das ist in einem Frame der Fall, wenn die Taste losgelassen wird.
Halte die Leertaste bei 60 Frames pro Sekunde eine halbe Sekunde lang gedrückt: Dann ist GetKey in 30 Frames wahr, GetKeyDown im ersten davon und GetKeyUp im Frame nach dem letzten. Eine Kanone, die einmal pro Tastendruck feuert, fragt GetKeyDown ab; mit GetKey würde ein Tastendruck 30 Schüsse abfeuern:
public int shots = 0;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
shots++;
Debug.Log("Shots fired: " + shots);
}
}GetKeyUp ist für das, was passiert, wenn der Spieler die Taste loslässt, zum Beispiel das Ende eines Sprints. Alle drei liefern nur eine Antwort für den aktuellen Frame. Deshalb gehören sie in Update(): Diese Methode wird in jedem Frame ausgeführt, während Start() einmal ausgeführt wird und fast jeden Tastendruck verpassen würde.
Aufgabe
EinfachDie Schleuder lädt sich auf, solange die Leertaste gedrückt wird, und meldet beim Loslassen den Schuss.
- Addiere in
Update(), solangeInput.GetKey(KeyCode.Space)wahr ist,Time.deltaTimezucharge. - Protokolliere bei
Input.GetKeyUp(KeyCode.Space)"Charge: " + chargeund setze dannchargeauf 0.
Drücke „Spielen“, halte die Leertaste gedrückt und lass sie los: Die Console zeigt eine Zeile wie Charge: 1.5. Klicke dann auf „Prüfen“.
Probier es selbst
using UnityEngine;
public class Slingshot : MonoBehaviour
{
float charge = 0f;
void Update()
{
// Solange Space gedrückt gehalten wird: charge steigt jede Sekunde um 1.
// Wenn Space losgelassen wird: Gib charge im Log aus und setze sie dann wieder auf 0.
}
}
Alle Lektionen in Unity-Scripting: Grundlagen
1C#-Grundlagen in Unity
Hallo, UnityVariablenDezimalzahlen brauchen ein fText in der KonsoleVariablen, die sich etwas merkenIf und ElseZahlen vergleichenRückblick: Münzsammler7Schleifen und Methoden
Wiederholen mit forSchleifen in SchleifenEine Methode schreibenMethoden mit RückgabewertArraysRückblick: Treppe10Dinge finden
Nach Namen suchenTagsNach Typ suchenReferenzen schlagen SuchenUnitys NullRückblick: nächste Münze13Projekt: Weiche den Blöcken aus
Der LäuferBlöcke vom Himmel2Bring es in Bewegung
Platziere den WürfelBewege ihn in jedem FrameDrehe ihn jede SekundeSteuere mit den TastenRückblick: Fahre den Würfel5Vektoren
Vektoren addierenRichtungenLokaler und globaler RaumDiagonale GeschwindigkeitAbstand zwischen ObjektenVector3 ist eine StrukturRückblick: Drohnenpilot8GameObjects und Komponenten
Referenzen im InspectorEine Komponente abrufenFehlende KomponentenEine Komponente hinzufügenRequireComponentEin- und AusblendenRückblick: Lichtschalter11Prefabs und Erzeugen von Instanzen
Prefabs und InstantiateNach Zeitintervall erzeugenIn einem Raster erzeugenListen von ObjektenDas Neueste zurücknehmenZerstörenZufälliges ErzeugenRückblick: Feuerwerk14Abschließende Herausforderungen
MünzmagnetDie Straße überquerenStraßenverkehrTurmbauerLanden oder verfehlen3Der Inspector
Inspector-FelderSerializeFieldFließkommazahlen und MathfInspector-AttributeRückblick: Aufzug6Transformationen und Hierarchie
Eltern und KinderHisse die FlaggeSkalierungDinge anschauenAuf einen Punkt zubewegenRückblick: Mond in Umlaufbahn9Projekt: Fang den Stern
Der FängerEin fallender Stern12Der Lebenszyklus eines Skripts
Awake und StartUpdate und LateUpdateOnEnable und OnDisableDie Reihenfolge im LebenszyklusRückblick: Lifecycle LoggerÜbe selbstständig: Unity-Playground