Charakter Steuerung

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-

1. Vorbereitungen

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.

2. Physik und Kollision

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.

3. Weitere Einstellungen

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.

Script

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.

Jetzt haben wir zwei Möglichkeiten, um unser Script zu platzieren. Damit Du später weißt, welche Vor- und Nachteile die jeweilige Methode hat, erläutere ich hier beide Wege.

  • Objekt-Script: Dafür klicken wir einfach im Objekt-Menü mit der rechten Maustaste auf das entsprechende Objekt und wählen „Edit Script“. Dieses Script wirkt nur auf das ausgewählte Objekt. Wenn das Objekt eigenständig agieren soll und keine weiteren Objekte, mit dem gleichen Skript, benötigt werden, empfiehlt sich diese Variante.
  • Mesh-Script: Dazu klicken wir im Mesh-Menü mit der rechten Maustaste auf das entsprechende Mesh und wählen „Edit Default Script“. Dieses Script wirkt auf alle Objekte, die aus diesem Mesh resultieren. Diese Variante empfiehlt sich, wenn wir mehrere Objekte der gleichen Art benötigen. So brauchen wir das Script dafür nur einmal schreiben.

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);
}
Und darunter können wir direkt den Code für die Animationen hinzufügen.

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.

tutorials/dxstudio/charakter-steuerung.txt · Zuletzt geändert: 2009/07/25 23:14 von dave
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0