In diesem Tutorial befassen wir uns damit, wie wir in DX Studio unseren Hauptcharakter mit der Tastatur bewegen können. Hier das fertige Script -Steuerung Beispiel-
Als erstes öffnen wir DX Studio und erstellen ein neues 3D Dokument.
Bevor wir anfangen brauchen wir erst einmal einen Boden und ein 3D Model mit Animationen. Animationen sind nicht unbedingt erforderlich, in der Online Library finden wir allerdings ein kostenloses Model, bei dem Animationen schon integriert sind.
Dazu klicken wir unten links im „Meshes“ Menü auf das „plus“-Symbol und wählen im darauf folgenden Menü die „ground_plane“. Danach wiederholen wir das Ganze, nur dass wir diesmal auf „Online library“ klicken.
Nun sollte ein neues Fenster erscheinen in dem sich neben einigen Models oben auch ein Suchfeld befindet. In diesem Suchfeld schreiben wir „girl“ und klicken dann auf das Bild von „Girl“.
Nun erscheint eine kleine Infoseite zu diesem Model. Ganz oben ist ein Link namens „Download“, wenn wir diesen anklicken, wird das 3D Model direkt heruntergeladen und im aktuellen Projekt hinzugefügt. Man kann vorher auch ein Häckchen in „Preview in player“ setzten, dann kann man sich das Model direkt vorab nochmal ansehen.
Herzlichen Glückwunsch, nun hast auch Du das berühmt berüchtigte „Girl“ heruntergeladen. Wenn du dich in den offiziellen DX Studio Foren bewegst, wird dir dieses(neben der „ground_plane“ und dem „barrel“) sehr häufig über den Weg laufen.
Damit unser Charakter später auch Berge erklimmen oder von diesen herabstürzen kann, müssen wir nun Physik anschalten. Physik wirkt nur auf Objekte, bei denen diese auch aktiviert wurde. Zudem sorgt die Aktivierung von Physik auch dafür, dass einzelne Objekte miteinander Kollidieren können.
Damit unser Charakter nicht durch den Boden fällt klicken wir „ground_plane_1“ im Objektmenü an und setzen rechts bei den „Object Properties“ ein Häckchen unter „Physics Engine → Enable“. Daraufhin wird sich das Menü erweitern.Hier entfernen wir nun die Häckchen bei „Allow movement“, ansonsten wird unser Boden einfach nach unten ins Nichts fallen.
Bei „girl_1“ wiederholen wir die vorherigen Schritte, nur wählen wir in dem Drop-Down Menü „Character“ und setzen ein Häckchen bei „Apply gravity“. Das sorgt dafür, dass für dieses Objekt speziell auf Charaktere angepasste Physik-Eigenschaften wirken.
Um das zu testen platzieren wir unseren Charakter einfach mal ein wenig über dem Boden. Wenn wir das Ganze starten sollte der Charakter auf dem Boden stehen bleiben.
Damit wir später nicht durch die Kamerabewegung irritiert werden, wählen wir diese im Objektmenü aus und entfernen das Häckchen bei „Allow keyboard movement“. So bleibt die Kamera unangetastet, wenn wir w,a,s,d zur Steuerung unseres Charakters verwenden.
Nun folgt das erste Script, um unseren Charakter zu bewegen. Es gibt sehr viele Möglichkeiten so etwas zu realisieren, dieser ist aber am einfachsten und sollte verdeutlichen, wie das Ganze funktioniert.
Für unser Vorhaben wählen wir also das Objekt-Script(Objekt-Menü - > girl_1 → Edit Script) und fügen folgendes Script hinzu.
Grundsteurung
function onUpdate() { if (keys.w) { object.autoMoveForward(5.0); } if (keys.s) { object.autoMoveBack(5.0); } }
Das Script sorgt nun dafür, dass das aktuelle Objekt mit der Taste W nach vorn bewegt und mit s nach hinten bewgt wird(Die Zahl in den Klammern bestimmt die Geschwindigkeit). Wenn wir das nun starten wird sich der Charakter auf Tastendruck einfach nach vorn und nach hinten „schieben“ lassen. Bevor wir aber die Animationen integrieren, sollten wir erstmal dafür sorgen, dass der Spieler auch nach links und nacht rechts laufen kann. Dafür lassen das Model mit den Tasten A und D rotieren. Den folgenden Code fügen wir dem onUpdate() Block hinzu.
Rotation
if (keys.a) { object.rot.rotateAxis(new Vector(0,1,0), -system.timerDelta*90.0); } if (keys.d) { object.rot.rotateAxis(new Vector(0,1,0), system.timerDelta*90.0); }
Animation
var wantAnim="Idle"; if (VectorMath.length(object.posVelocity)>1.5) { wantAnim="Run"; } object.animationTransitionPeriod=0.2; if (object.animation != wantAnim) { object.animation=wantAnim; }
Mit der ersten If-Anweisung prüfen wir ob eine bestimmte Geschwindigkeit gegeben ist und ändern dann die Variable, in der die aktuelle Animation angegeben ist.
Mit object.animationTransitionPeriod bestimmen wir den Übergang zwischen den Animationen. Und nachfolgenden Block wird geprüft, ob für das Objekt eine Animation festgelegt ist. Ist das nicht der Fall wechselt die Animation wieder in die standard Idle-Animation. Um zu schauen welche Animationen existieren, klicken wir einfach im Mesh-Menü auf das Girl-Mesh mit rechts und wählen „Edit Animations“. Im Drop-Down Menü kann dann eine Animation ausgewählt werden und mit einem Klick auf „Play“ kann man sich diese auch gleich im Editor ansehen.