3D GAMESTUDIO-Magazin Ausgabe 01 | Oktober 20051
3D GAMESTUDIO-Magazin Ausgabe 01 | Oktober 20051
3D GAMESTUDIO-Magazin Ausgabe 01 | Oktober 20051
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