Skripting in Unity Grundkurs

Input abfragen: "GetKey"

Testen Sie unsere 1986 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Wie Sie Tastatureingaben mit "GetKey" und verwandten Funktionen abfragen können, verrät dieser Film. Testen Sie damit, ob eine Taste gedrückt, gehalten oder losgelassen wird
08:18

Transkript

Jetzt wollen wir uns anschauen, wie wir User-Input abfragen können. So eine interaktive Applikation oder ein Spiel, zeichnen sich ja genau dadurch aus, nämlich dass Nutzer von außerhalb Einfluss nehmen können, und das durch Input, also zum Beispiel durch das Drücken der Maustaste, oder durch das Betätigen eines Keys, einer Taste auf der Tastatur. Und genau darum soll es hier auch gehen, um die Funktion GetKey. Dafür habe ich hier in unserer Szene ein leeres GameObject erstellt, mit dem Namen InputManager, das auch das gleichnamige Skript InputManager bereits hat. Dass die beiden Objekte hier gleich heißen, ist völlig okay, das kann man so machen. Im InputManager ist zur Zeit noch alles leer, das ist das Standard-Skript, was erstellt wird, wenn wir ein neues C#-Skript erstellen. Um jetzt Input abzufragen, merken wir uns das Schlüsselwort, und das ist gar nicht mal so schwer, denn es geht um Input, also ist das Schlüsselwort Input. Wir sagen hier dem Programm: So, an dieser Stelle möchte ich jetzt Input abfragen. Ganz bewusst schreiben wir das natürlich in die Update-Funktion. Denn Input, da gehen wir jetzt einfach mal von aus, kann zu jedem Zeitpunkt passieren, das wissen wir nicht genau, nicht nur zu einem bestimmten Zeitpunkt, wie zum Beispiel bei Start in der Initialisierung. Wir sagen also, pro Bild soll unser Programm Input abfragen, soll kucken, ist da gerade Input vorhanden, ja oder nein? Okay, Input. und dann gehen wir hier und sagen, ja, ich möchte Input abfragen, aber wie möchte ich das Ganze denn tun? Und wir kriegen jetzt hier schon vorgeschlagen, und wir sehen, es ist eine ganze Menge, wie man denn Input abfragen könnte. Hier soll es jetzt erstmal um GetKey gehen, und mit einer runden Klammer auf und Klammer zu, mit einem angehängten Semikolon, finalisieren wir zunächst diesen Befehl, diese Zeile. Jetzt fehlt hier natürlich noch etwas, deshalb ist das auch rot unterstrichelt. Wir sagen, ja, Input abfragen. Wie das Ganze? Über die Funktion GetKey. Also überprüfe oder kontrolliere bitte irgendeinen Key, irgendeine Taste auf der Tastatur, Jetzt müssen wir ihm natürlich noch sagen, welche Taste das sein soll, und das kommt hier in diese Klammern. Verweilen wir mit dem Cursor etwas länger über der Fehlermeldung, dann sehen wir, dass in diesen Klammern ein sogenannter Keycode verlangt wird. Über das Schlüsselwort Keycode, Punkt und dann den entsprechenden Key, die entsprechende Taste, spezifizieren wir, welche Taste denn überprüft werden soll. Hier werde ich jetzt einfach mal die Taste "W" benutzen, und das bedeutet, liebe Funktion GetKey, überprüfe mir die "W"-Taste. Das speichern wir, und jetzt kann es natürlich dazu kommen, dass man sich sagt, ja, ich möchte zum Beispiel die "1" überprüfen. Die gibt es die "1" auf dem Nummernblock, und da gibt es die "1" über die normalen Buchstaben. Was muss ich denn da jetzt eintragen? Welcher Keycode entspräche meiner "1"? Und hierfür ist die Skripting-API von Unity wieder sinnvoll. Denn hier sehen wir, welche Keycodes uns zur Verfügung gestellt werden, von Unity selbst. All die Einträge, die hier stehen, mit entsprechender Erklärung, kann ich auch hier hinter meinen Keycode setzen. Und dieser Befehl wäre jetzt erstmal fehlerfrei und ausführbar. Es passiert natürlich noch nichts, Input ist ja immer eine Bedingung. Wenn Input kommt, liebes Spiel, dann tue auch bitte etwas. Genau das werde ich jetzt auch hier tun, ich werde eine Bedingung herstellen, und das mit if. if Input GetKey und so weiter und so weiter, dann kommt der Rumpf der Bedingung, und da soll ja rein, was soll denn passieren, wenn dieser Input passiert? Hier schreibe ich jetzt erstmal rein, Debug.Log zum Beispiel, "W" wurde gedrückt. Kucken wir uns nochmal ganz konkret an, was hier steht. Wenn - ja, was denn? - Wenn diese Bedingung true - also wahr ist, und hier steckt auch schon das Wichtigste drin, denn dieser ganze Ausdruck liefert uns entweder true oder false zurück, also ja, ich bin wahr oder ich bin falsch, je nachdem, ob die "W"-Taste jetzt gedrückt wird oder nicht. Und das passt natürlich super zu unserer If-Bedingung, dann soll bitte das ausgegeben werden, natürlich am Ende, mit einem Semikolon. Und jetzt gehen wir in Unity, und starten die Anwendung, und sehen, wenn wir die Konsole öffnen, dass wenn ich "W" betätige, automatisch "W wurde gedrückt" ausgegeben wird. Wenn ich "W" halte, zählt dieser Zähler hier rechts natürlich hoch, in Abhängigkeit von unserer Framerate. Jetzt gibt es nicht nur GetKey. Das Ganze kann man auch anders schreiben, beziehungsweise etwas erweitern, indem man zum Beispiel GetKeyDown oder GetKeyUp benutzt. Das Ganze hat noch mit GetKey zu tun, und das ist wichtig, immer wenn es um Key geht, dann müssen wir einen Keycode verwenden, und GetKeyDown und GetKeyUp bedeuten jetzt einfach, dass diese Funktionen zu bestimmten Zeitpunkten aufgerufen werden. Kurz erklärt, das bedeutet einfach, GetKey wird so lange getriggert, wie die "W"-Taste gedrückt wird. Es wird also geschaut, das Bild wird gerendert, ist die "W"-Taste gedrückt, alles klar, dann tue etwas. Im nächste Bild ist sie immer noch gedrückt, alles klar, dann tue etwas. Und GetKeyDown und GetKeyUp - hier sollte natürlich "Up" stehen - werden nur zu einem einzigen Zeitpunkt getriggert. Denn die "W"-Taste können wir gedrückt halten, aber es gibt immer nur einen Moment für das Programm, wo wir gerade die "W"-Taste nach unten gedrückt haben, und das wäre GetKeyDown, und wo wir sie losgelassen haben, und das wäre GetKeyUp. Von daher werde ich jetzt mal folgendes tun, werde das hier gegen "wird gedrückt" ändern, kopiere mir das hier, nur diesen Teil, mache hier mehrere If-Bedingungen draus, erweitere also meinen Code etwas, und das Gleiche machen wir natürlich auch hier, zur Zeit sieht das noch ein bisschen unordentlich aus, aber das wird sich gleich beheben, und dann werden wir sehen, das hat schon einen Unterschied. Denn - die Rümpfe kopiere ich auch mit, das geht am schnellsten - hier wurde gedrückt - und hier wurde losgelassen. Und wir schauen uns jetzt genau an, was passiert. Das sind drei unterschiedliche Funktionen, die auch zu drei völlig unterschiedlichen Zeitpunkten getriggert werden. Ich drücke die "W"-Taste, und natürlich zählt er hoch, "W" wird gerade gedrückt, pro Frame kucke ich das jetzt gerade nach. Aber nur an einem einzigen Zeitpunkt wurde "W" gedrückt. Danach ist es bereits gedrückt, es wurde gerade nicht gedrückt. Und jetzt lasse ich die "W"-Taste los, und wir sehen, auch nur zu einem einzigen Zeitpunkt wurde die "W"-Taste losgelassen, danach ist sie schon nicht mehr gedrückt. Und so haben wir jetzt kennengelernt, wie wir über die Funktion GetKey, GetKeyDown und GetKeyUp Input per Keycode abfragen können. In Abhängigkeit davon können wir also eine ganze Menge steuern.

Skripting in Unity Grundkurs

Greifen Sie mithilfe von C#-Skripts dynamisch in Ihr Unity-Projekt ein. Auch Programmier-Neulinge lernen Schritt für Schritt den Einstieg ins Skripting.

4 Std. 50 min (40 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Anleitung für Unity 5-Nutzer:

  • Schritt 1: Projekt in Unity 5 öffnen und die Meldung bestätigen, dass das Projekt ein Upgrade bekommt.
  • Schritt 2: Wenn die Meldung kommt, dass die API upgedatet werden muss, diese auch bestätigen

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!