F:
Wie bringt man eine Spielfigur dazu, einer anderen zu folgen?
A: Hier ist eine modifizierte
Action des A5 Demo Projektes.
entity* robot_boss;
action robot_master
{
robot_boss = my;
// put the rest of your code here
// ........
}
action robot_slave
{
var slave_target;
var slave_speed;
while (robot_boss == null) {wait (1);}
while (1)
{
my.tilt = 0;
slave_target.x = robot_boss.x - 50 * cos (robot_boss.pan);
// stay 50 quants
slave_target.y = robot_boss.y - 50 * sin (robot_boss.pan);
// behind robot_boss
slave_target.z = robot_boss.z;
slave_speed.x = 7 * time;
slave_speed.y = 0;
vec_set (temp, my.x);
temp.z -= 1000;
trace_mode = ignore_me + ignore_sprites + ignore_models
+ use_box;
slave_speed.z = -trace (my.x, temp);
vec_set (temp.x, slave_target.x);
vec_sub (temp.x, my.x);
vec_to_angle (my.pan, temp);
if (abs(slave_target.x - my.x) + abs(slave_target.y
- my.y) > 30)
{
ent_move (slave_speed,
nullvector);
ent_cycle("walk",
my.skill10); // play walk frames animation
my.skill10 += 5
* time;
my.skill10 %= 100;
}
wait (1);
}
}

F: Ich
versuche gerade, den Code für meine eigenen Waffen zu schreiben. Wie
kann ich der Trace Anweisung Partikel zuweisen? Ich will kein Skript, nur
die Idee.
A: Trace setzt “target” auf die Koordinaten
des Auftreffpunktes. Schreiben Sie diese Zeile unter Ihre trace Anweisung.
effect(your_particle_function, number_of_particles, target, initial_particle_speed);
Example:
effect(hit_sparks, 10, target, vector(1, 1, 2));
F:
Ich habe das Model eines Baumes und möchte gern bis zum Stamm laufen
können, aber die Bounding Box erlaubt es mir nicht, wegen der Blätter.
A: Führen Sie
folgende Schritte aus:
- Stellen Sie das Baum Model in Ihr Level und machen Sie es “passable”;
- Plazieren Sie einen Zylinder (primitive) mit 6-16 Flächen an derselben Position wie der Stamm und machen sie ihn unsichtbar.


F:
Wie kann ich ein Tor (eine Falle) hinter dem Spieler zufallen lassen,
wenn er durch einen Laser läuft?
A: Plazieren Sie eine
Entity nahe an Ihrem Laser und geben Sie ihr die Action “door_trigger”.
Für die Tür nutzen Sie eine WMB Entity mit der
Action “door_trap”.
entity* door_t;
action door_trigger
{
my.invisible = on;
my.passable = on;
while (player == null) {wait (1);}
while (door_t == null) {wait (1);}
while (vec_dist(player.x, my.x) > 100) {wait (1);}
while (door_t.z > 0) // final z = 0, play with this value
{
door_t.z -= 3 * time; // 3 = speed
wait (1);
}
door_t.z = 0; // the door moves from 100 to 0 quants in this example
}
action door_trap
{
door_t = my;
my.z = 100; // initial z, play with this value
}

F:
Ich benötige simplen Code für den Levelwechsel bei einem Projekt
mit 9 Levels. Eine einfache Box und eine Ziffer, die der Levelzahl entspricht
wäre genug.
A: Klicken Sie hier, um das Projekt
herunterzuladen.
F:
Ich mache ein Spiel und frage mich, wie ich einen Film (avi) einfügen
kann. An einem bestimmten Punkt soll es ausgelöst werden.
A: Plazieren Sie eine
Entity mit der movie_trigger Action; wenn Sie ihr nahe kommen,
startet der Film.
action movie_trigger
{
my.passable = on;
while (player == null) {wait (1);}
while (vec_dist(player.x, my.x) > 100) {wait (1);}
media_play("my_movie.avi", null, 50);
}
F: Wie
kann ich aus einer Textdatei Planetennamen auslesen, zufällige x, y
und z Koordinaten setzen, diese in einer Datei speichern und wieder laden,
wenn der Spieler nahe heran kommt?
A: Klicken Sie hier, um ein Projekt herunterzuladen,
das fünf Planetennamen aus einer Textdatei namens planets.txt liest,
für jeden Planeten eine zufällige Position erzeugt und dann die
Namen und Koordinaten in processed.txt schreibt. Sie sollten mit “ent_create” dann
kleine Entities mit wenig Polygonen an diesen Positionen erstellen und diese
verwenden, um die Distanz zwischen ihnen und dem Spieler in einer Schleife
zu prüfen und die Planeten darzustellen, wenn der Spieler nahe genug
ist.
F:
Ich habe das Projekt aus der FAQ von AUM37 probiert (moveps2.zip) und hätte
einen Änderungswunsch: wenn ich mich drehe und in die neue Richtung
gehen möchte, dann geht das durch Druck auf “W”, gleich
welche Richtung das ist.
A: Klicken Sie hier für
die modifizierte Version. Mit “A” und “D” kann
der Spieler gedreht werden. “W” bewegt ihn nach vorn
und “S” nach hinten.
F: Wie
kann ich große Level mit Terrain bauen ohne Performance zu verlieren?
A: Verwenden Sie mehrere (kleinere)
Terrain Entities zusammen mit Nebel und geeigneten camera.clip_far
Einstellungen. Schauen Sie sich das Bild unten an: alle blauen Terrains
werden gerendert (das geschieht, wenn nur ein einzelner Vertex in
der camera.clip_far Reichweite ist), aber die violetten werden nicht
angezeigt. Vergessen Sie nicht, die Terrains gut zusammenzusetzen;
ich habe den Platz zwischen ihnen absichtlich gelassen, weil ich
wollte, dass Sie die Terrains als verschiedene Teile erkennen.