F: Ich kann die emit_fish Funktion nicht dazu bringen, in die View-Richtung des Benutzers auszustoßen. Wir wollen sie dazu bringen, wie ein Gewehr zu schießen, aber er wird nur in einer geraden Linie ausgestoßen.
A: Der Code für den Fisch ist gut geschrieben; das Problem tritt auf, da man mit dem Tilt-Wert der Kamera nicht automatisch den Tilt-Wert des Spielers ändert. Ändere den Kamera-Code, sodass der Tilt-Wert des Spielers geändert wird, wenn man rauf und runter schaut und das Problem wird gelöst sein.

F: Ich benutze die Klingen aus dem AUM in meinem Level. Wie kann ich es erreichen, dass sie aus dem Boden kommen? Ich will sie die ganze Zeit aktiv haben...hoch und runter.
A: Ersetze action slicing_blades mit dieser hier:

action slicing_blades
{
my.enable_impact = on;
my.enable_entity = on;
my.enable_push = on;
my.push = -5;
my.event = kill_player;
my.skill10 = my.z;
while (1)
{
while (my.z < my.skill10 + 300)
{
my.z += 15 * time;
wait (1);
}
while (my.z > my.skill10 - 300)
{
my.z -= 15 * time;
wait (1);
}
wait (1);
}
}

F: Ich mag den Panzer-Code in AUM21 und ich will die KI für die gegnerischen Panzer verbessern . Wie kann ich die Tilt-Werte für ihre Türme berechnen, wenn ich den Abstand zum Spieler weiß?
A: Hier ist das Formular, das die Reichweite eines im Winkel Theta geworfenen Objekts beschreibt wenn seine Geschwindigkeit bekannt ist. Die größte Reichweite wird mit Theta (tilt) = 45 Grad erreicht; g = Gravitationskraft.

F: Wie kann ich entity1 dazu bringen entity2 anzuschauen?
A: Benutze diesen Code:

vec_set (temp.x, entity2.x);
vec_sub (temp.x, entity1.x);
vec_to_angle (entity1.pan, temp);

F: Ich brauche einen Kameracode für ein Kampfspiel; Die Kamera muss zwischen den beiden Spielern platziert sein.
A: Hier ist dein Code; Er beinhaltet 2 Entities, die mit den Tasten AS und KL bewegt werden können:

// place this line at the end of main: set_camera();

function set_camera();

entity* karate_kid;
entity* karate_granny;

action kid
{
karate_kid = me;
while (1)
{
if (key_a == 1) {my.x -= 30 * time;}
if (key_s == 1) {my.x += 30 * time;}
wait (1);
}
}

action granny
{
karate_granny = me;
while (1)
{
if (key_k == 1) {my.x -= 30 * time;}
if (key_l == 1) {my.x += 30 * time;}
wait (1);
}
}

function set_camera()
{
camera.pan += 90;
camera.tilt -= 15;
while ((karate_kid == null) || (karate_granny == null)) {wait (1);}
while (1)
{
camera.x = (karate_kid.x + karate_granny.x) / 2;
camera.y = min(karate_kid.y, karate_granny.y) - vec_dist (karate_kid.x, karate_granny.x) - 400;
camera.z = 200;
wait (1);
}
}

F: Ich würde gerne mehrere Level laden indem ich level-strings benutze, die zur Laufzeit festgelegt werden. Ist dies möglich?
A: Sicher. Dieser Code sollte funktionieren:

string office_wmb = <office.wmb>;
string test_str;

// the lines below should go in main
str_cpy (test_str, office_wmb);
level_load(test_str);

F: Wie kann ich meine flags und skills sichern, bevor ich ein Levelwechsel ausführe?
A: Schreibe me = null; in jede Aktion oder Funktion und sie wird nach dem Levelwechsel weiterlaufen.

F: Packt der Filepacker alles in eine Datei, oder kann man mehrere Dateien erstellen?
A: Man kann mehrere resource files erstellen; Erstelle eine Wdl-Datei und verwende bind <resource_name.extension>; für alle Entities die in der Wrs-Datei enthalten sein sollen . Öffne Wed, klicke auf File - New und dann File - Map properties. Wähle deine eben erstellte Wdl-Datei aus und “resource“ das Projekt.

F: Warum und wie soll ich trigger_range und event_trigger verwenden?
A: Event_trigger wird starten, wenn 2 Objekte sich einander nähern ; trigger_range legt den Abstand fest, wann der event ausgelöst werden soll. Hier ist ein Beispiel:

function alarm();

action trigger_me
{
my.enable_trigger = on;
my.trigger_range = 300;
my.event = alarm;
}

function alarm()
{
if (event_type == event_trigger)
{
beep;
}
}