Skripting in Unity Grundkurs

Grundlegende Bewegungsmöglichkeiten: Transform

Testen Sie unsere 1985 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Objekte zu bewegen, ist eine der häufigsten Aufgaben des Programmierers. Hier sehen Sie eine Möglichkeit der Bewegung über die "Transform"-Komponente.
10:11

Transkript

Kommen wir in diesem Video dazu, wie wir konkret an diesem Charakter, den wir hier vor uns sehen, eine ganz grundlegende Bewegung umsetzen können. Dafür habe ich diesen Charakter zunächst in eine Beispielszene geschmissen, und er hat noch kein Script, sondern nur die normalen Standardkomponenten. Wir fügen diesem jetzt erst mal ein Script hinzu, über Create, C# Script, und dann werde ich das jetzt auftrennen in Player_ zum Beispiel, und hier geht es ja um Bewegung, also nennen wir das Player_Move. So. Das Script öffnen wir direkt in Visual Studio, die beiden Warnungen bestätigen wir mit einem Klick auf Yes, und Reload, beziehungsweise Reload und Yes, und hier stelle ich jetzt meine Standardformatierung wieder her. Jetzt geht es ja um eine Bewegung, also überlegen wir uns, das ist jetzt unser Problem, was wir aufsplitten wollen, und wir splitten es, beziehungsweise analysieren es in Arbeitsschritte. Und wir splitten es auf, in kleinere Schritte und analysieren diese. Das heißt, Bewegung, ja, das ist erst mal eine Positionsänderung. Und Positionen werden hier, bei unserem Player, in der Transform Komponente gespeichert. Okay, dann greifen wir doch auch darauf zu. Das Ganze soll ja in Update passieren, und das heißt, die Bewegung machen wir jetzt erst mal vorne, hinten, links, rechts. Was fragen wir also ab? Ja, wir fragen jetzt Buttons ab, aber nicht nur, sondern wir machen das jetzt folgendermaßen, das wir in Unity in den Input Manager gehen, und uns die Achsen anschauen, die wir haben, denn vorne, hinten, links, rechts, wenn wir uns das überlegen, entspricht ja den Achsen Horizontal und Vertikal. Okay, dann gehen wir jetzt noch mal in Visual Studio, und versuchen jetzt unsere Bewegung mit Achsen umzusetzen, und das ist ja wiederum eine Bedingung, denn das ist von Input abhängig, und da benutze ich jetzt eine if-Bedingung. Also, wenn Input kommt, und wir nehmen zunächst einmal die horizontale Achse, also None eine Achse holen wir uns über GetAxis, dann holen wir uns den Namen aus Unity, Horizontal, einfach Strg+C, und in Visual Studio Strg+V, und jetzt können wir hier natürlich nicht, mit diesem Begriff alleine arbeiten, denn hier steckt ein Wert dahinter, deshalb werden wir das Ganze gegen null checken, denn wir wissen ja, hier wird dieser Wert immer Null sein, wenn kein Input auf dieser Achse kommt. Und unser Spiel soll nur reagieren, wenn da doch Input kommt, also wenn das Ganze ungleich Null ist. Jetzt geht es an die Positionsänderung, Horizontal bedeutet links-rechts, das heißt, wir greifen auf die transform-Komponente zu, und da auf die position, und wir sagen hier, das setzen wir jetzt neu. Das ist ein neuer Vector 3, eine neue Variable, die x,y,z speichern kann, und da es an die links-rechts Bewegung geht, müssen wir uns anschauen, was ist denn bei unserem Charakter links und rechts. Klicken wir den also an, bekommen wir hier ja unser Koordinatensystem, und links und rechts bedeutet hier ja für uns eine Bewegung auf der X-Achse. Das können wir ja hier einfach mal nachstellen, indem wir die X-Werte verändern, und wir sehen, okay, das ist links und rechts. zurück in Visual Studio heißt das also, wir müssen an den X-Wert ran. Und hier werde ich einfach mal mit dem GetAxis-Wert herumspielen, das heißt, ich nehme die jetzige Position und davon den X-Wert, denn es geht ja nur um X, und sage + Input.GetAxis("Horizontal") Die Y- und Z-Werte bleiben null, denn auf den Achsen wollen wir uns kein bisschen bewegen. So. Was steckt nun dahinter? Hier machen wir jetzt noch eine Klammer zu und ein Semikolon und finalisieren damit die Zeile. Was steckt hier nun also dahinter? Wir sagen, wenn der Input auf der horizontalen Achse nicht null ist, werden wir da also irgendeine Art von Input bekommen, tue etwas. Was sollst du bitte tun? Nimm die Position, die in transform steckt, und setze sie neu, new vector 3. Bei dem neuen vector 3 kümmert uns nur die X-Achse, deshalb sind hier hinten, Y und Z null. Der X-Wert ist jetzt jedoch interessant. Was tut der hier? Der nimmt die aktuelle X-Position, wo wir gerade sind, und addiert etwas auf. Und hier wird es jetzt interessant, denn in Unity, unsere horizontale Achse, hat ja durchaus auch Negative Buttons. Und was dann folgt ist, dass hier + - vielleicht 1 steht, was bedeutet, ja, wir gehen nach links, und genau das wollen wir ja haben. Das ist jetzt unser erster Schritt Wir haben uns überlegt, Positionsänderung, Bewegung - Okay - machen wir das erst mal, splitten wir das auf in links und rechts. Und jetzt testen wir erst mal. Wenn das klappt, okay, können wir weiter machen wenn nicht gucken wir mal, woran es liegt. Ich gehe in den Playmode, klicke zur Not mit der Maus noch mal in den Gamemode, damit auch wirklich Input abgefragt wird, und, okay, ich teste, - es scheint aber noch nicht zu klappen. Dann gucken wir mal, was passiert. Wir gehen rein, jetzt setzt das Debugging ein, und sagen hier einfach mal Debug.Log ("Input with Horizontal") oder ("Input @ Horizontal") würde vielleicht ein bisschen besser passen, weil Sie ja an dieser Achse irgendeinen Input abfragen. Und jetzt wissen wir nämlich gleich, wenn das hier aufgerufen wird, dann stimmt hier irgendwas nicht. Wenn das hier gar nicht erst aufgerufen wird, also gleich in unserer Konsole steht, dann ist irgendwas nicht in Ordnung und diese ganze Funktion, diese ganze Abfrage stimmt nicht. Okay, gehen wir noch mal in den Playmode, klicken zur Not noch mal hier unten auf Game, und betätigen die jeweiligen Tasten und wir sehen, nein - hier in unserer Konsole wird zur Zeit nichts ausgegeben. Also, liegt der Fehler wohl irgendwo hier. Aber wenn wir uns das genau anschauen, dann stimmt hier eigentlich alles. Wo könnte der Fehler also noch liegen? Und jetzt haben wir hier eine weitere Fehlerquelle. Denn wenn wir uns eigentlich sicher sind, Moment, das müsste doch stimmen, und die Achse, den Namen habe ich mir doch kopiert, da habe ich mich doch auch nicht verschrieben, was ist denn jetzt hier der Fehler? Dann sollten wir ab diesem Zeitpunkt gucken, ob wir denn auch das Script, was wir die ganze Zeit erstellt haben, irgendwo zugewiesen haben. Und wir sehen, das war unser Fehler, das haben wir noch nicht gemacht. Wir haben zwar gute Arbeit abgeliefert, die kann aber noch niemand sehen, weil das Script wird noch nicht ausgeführt, weil es einfach nicht zugewiesen ist. Das liegt hier im Moment noch unbenutzt in unseren Ordnern, das müssen wir natürlich erst auf den Player draufziehen. Erst jetzt kann es ausgeführt werden. Jetzt gehen wir noch mal in den Playmode, und wenn wir jetzt die Tasten links, rechts, A und D betätigen, dann sehen wir, ja, alles klappt und natürlich wird in unserer Konsole auch das Entsprechende ausgegeben. Jetzt haben wir hier noch eine kleine unschöne Sache, denn unser Unity Mechaniker steckt etwas im Boden, und das hat den Grund, dass wir hier 0-Koordinaten genommen haben. Vorher haben wir ihn allerdings einigermaßen gut platziert, hier steht er gut auf dem Boden, und wir möchten uns diesen Wert hier nicht merken. Das kann ja sonst ein krummer Wert sein, der kann sich auch ab und zu mal verändern, wir sind jetzt mal zu faul, uns den zu merken, gehen zurück in Visual Studio, und geben hier nicht eine feste Null an, sondern genau wie hier, sagen wir, nimm die aktuelle Position, die du in diesem Fall, hier nicht bei X hast, sondern bei Y, und hier hinten mache das Gleiche bitte für Z. Und jetzt haben wir nichts hart reingecodet, so nennt man das. Wir haben keine festen Werte verwendet, null und null, sondern wir haben einfach gesagt, nimm dynamisch die Werte, die du sowieso schon bei dir, bei Position X, beziehungsweise Y und Z stehen hast, denn X werden wir ja noch verändern, zur Laufzeit. Und das hier speichern wir jetzt, gehen zurück in Unity, starten das Spiel, und sehen, okay, jetzt ist alles gut. Das hier jetzt noch keine Animationen abgespielt werden und der einfach nur nach links und rechts leitet, ist völlig okay. Wir haben uns kleine Ziele gesetzt, diese sogar noch mal runtergebrochen, Und das Gleiche können Sie ja jetzt mal versuchen, für die vertikale Bewegung, das heißt, nach vorne und hinten. hangeln Sie sich dabei am besten einfach an diesem Beispiel entlang, und tun Sie eigentlich genau das Gleiche was hier steht, nur vielleicht auf andere Achsen angewendet. ich wünsche Ihnen bei der Lösung dieses Problems, viel Spaß!

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!