11.12.2012 Aufrufe

3D GAMESTUDIO-Magazin Ausgabe 01 | Oktober 20051

3D GAMESTUDIO-Magazin Ausgabe 01 | Oktober 20051

3D GAMESTUDIO-Magazin Ausgabe 01 | Oktober 20051

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

}<br />

you = ptr_for_handle(my.skill40); // you-Pointer zurück holen<br />

vec_set(temp,you.x);<br />

trace_mode = ignore_models + ignore_sprites + ignore_passents + use_box;<br />

trace(my.x,temp); // Trace zur Hilfsentity<br />

vec_set(my.pos_target,target);<br />

vec_diff(temp,target,my.x); // Zielvector ermitteln<br />

vec_to_angle(my.pan,temp); // Soldat zum Ziel drehen<br />

my.tilt = 0;<br />

if(vec_dist(my.x,my.pos_target) > 35)<br />

}<br />

wait(1);<br />

}<br />

{<br />

force.x = 5; // Geschwindigkeit des Soldaten<br />

vec_diff(temp,my.pos_target,my.x);<br />

vec_to_angle(my.pan,temp); // Zur Zielposition drehen<br />

my.tilt = 0;<br />

gravity_entity(); // Gravitation<br />

move_entity(); // Bewegen des Soldaten<br />

Beginnen wir mit der ersten Zeile "while(player == null){wait(1);}", wir warten so lange bis der<br />

Player erstellt ist, um eine "Empty Pointer" Fehlermeldung zu umgehen. In den nächsten vier<br />

Zeilen werden die Parameter aus dem Array ausgelesen und in den Variablen "my.x_pos" und<br />

"my.y_pos" gespeichert. Als nächstes erstellen wir die Hilfsentity an den vorher ausgelesenen<br />

Positionen und weisen ihr den "you" Pointer zu. Das Ganze speichern wir mit Hilfe eines "handle" in<br />

dem "skill.40" unseres Soldaten. Den "you" Pointer benötigen wir später noch, um immer zu<br />

wissen welche Hilfsentity zu welchem Soldaten gehört. Nun befinden wir uns wieder in einer<br />

Schleife, dort wird der "you" Pointer ausgelesen und mit seiner Hilfe ein "trace" vom Soldaten zur<br />

Hilfsentity ausgeführt. Das Ziel wird im "target" Vektor gespeichert und anschließend der Soldat in<br />

Richtung des Ziels gedreht. Nun springen wir wieder in eine "if" Anweisung, in der wird der<br />

Abstand zu unseren Ziel berechnet. Ist die Entfernung größer als 35 Quants wird die<br />

Geschwindigkeit des Soldaten auf "5" gesetzt, nochmals der Richtungsvektor berechnet und der<br />

Soldat gedreht. Dann wird die Gravitation und die Bewegung des Soldaten aufgerufen.<br />

Funktion "pos1_ent"<br />

In dieser Funktion befinden sich alle Bewegungsbefehle der Hilfsentity.<br />

function pos1_ent()<br />

{<br />

my.passable = on; // Mache mich passierbar<br />

my.invisible = on; // Mache mich unsichtbar<br />

vec_diff(temp,my.x,player.x); // Abstandsvektor zum Player<br />

vec_set(my.x_pos,temp);<br />

while(1)<br />

{<br />

vec_set(temp,my.x_pos);<br />

vec_add(temp,player.x); // Abstandsvektor und Playervektor addieren<br />

vec_set(my.x,temp); // Hilfsentity zum Player ausrichten<br />

<strong>3D</strong> <strong>GAMESTUDIO</strong>-<strong>Magazin</strong> ■ <strong>Ausgabe</strong> <strong>01</strong> | <strong>Oktober</strong> 2005 │74

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!