function
player_flies()
{
............
while (flying)
{
player.x = helicopter.x;
player.y = helicopter.y;
player.z = helicopter.z;
player.pan = helicopter.pan;
player.tilt = helicopter.tilt;
player.roll = helicopter.roll;
wait (1);
}
}
F:
Wenn ich meine Map starte, sehe ich nur einen schwarzen Bildschirm mit
“A5” in der oberen rechten Ecke und nichts geschieht, nicht einmal nach
15 Minuten.
A:
Die Kamera (Ihr “Auge” in die 3D Welt) ist außerhalb des Levels plaziert
– daher Sehen sie nichts. Stellen Sie ein Model in Ihre Level und
geben Sie ihm die Action “player_walk_fight”.
F:
Ich verwende Ihre Resident Evil Kamera aus Aum4 und alles funktioniert
gut, bis ich in den 2. Stock des Gebäudes komme. Wenn mein Spieler
den Kameras aus dem Erdgeschoß zu nahe kommt (obwohl ich im 2. Stock
bin), schaltet das Spiel auf diese. Wie kann ich das beheben?
A:
Fügen Sie noch eine Anweisung zu der “if”-Bedingung der Funktion fixed_cameras()
hinzu:
if
((camera_position[temp_counter] < winner && camera_position[temp_counter]
> 0) && (player.z < 200))
{
...
}
Die Idee ist es, die Kameras nur dann zu aktivieren, wenn der Spieler eine ähnliche z-Koordinate hatte. Sie sollten außerdem:
while(player == null) {wait (1);}
als
erste Zeile in fixed_cameras() hinzufügen, um einen Empty Pointer
Fehler zu vermeiden.
F:
Einige Models (Quake 2 MDL Dateien) funktionieren nicht richtig in 3DGS;
wenn ich Ihnen die Funktion “player_walk” zuweise, zeigen Sie keine Gehanimation,
wenn sie gehen. Aber sie enthalten welche!
A:
Wenn Sie die Template Skripte verwenden, stellen Sie sicher, dass die Namen
der Frames identisch sind mit den Namen, die von den Templates verwendet
werden: “stand”, “walk”, “run”, “duck”, “swim”, “die”, “jump”, “crawl”.
Wenn Ihre Gehanimation z.B. 12 Frames hat, sollten diese Frames walk01..walk12
heißen usw. Heißen Ihre Frames z.B. move01..move12, dann funktioniert
es nicht.
F:
Ich hätte gern einen Gegner-Generator, wenn ich einen Gegner töte,
sollte ein anderer ihn ersetzen. Ist das möglich?
A:
Sicher. Kopieren Sie den Code unten an das Ende Ihrer office.wdl, plazierne
Sie irgendein Model im WED und geben Sie ihm die Action enemy_generator:
string guard_mdl = <guard.mdl>;
entity* my_enemy;
action
enemy_generator
{
my.invisible = on;
my.passable = on;
while (1)
{
my_enemy = ent_create(guard_mdl, my.pos, actor_ai_one);
while (my_enemy != null) {wait (1);}
wait (1);
}
}
F:
Wenn ich Mipmaps für mein Model möchte, müssen die Skins
eine Zweierpotenz sein bzw. quadratisch?
A:
Nein, das ist nicht nötig; wenn Sie aber rechteckige oder quadratische
Bilder verwenden, deren Seitenabmessungen Zweierpotenzen sind, wird dies
die Geschwindigkeit ein wenig erhöhen.
F:
Wie kann ich die Tastenbelegung in player_walk_fight ändern?
A:
Öffnen Sie input.wdl und suchen Sie nach dieser Codezeile in _player_intentions:
force.Z = strength.Z*(KEY_HOME-KEY_END); // up and down
Dieses Beispiel ändert die Tasten für “jump” und “crouch” in S bzw. X:
force.Z
= strength.Z*(KEY_S-KEY_X);
// up and down
F:
Ich bekomme die Fehlermeldung 041 – lightmap space overrun, aber ich finde
es nicht im Handbuch. Was bedeutet es?
A:
Ihr Level ist zu groß und der Speicher für die Lightmaps ebenso.
Verwenden Sie eine dieser Methoden:
-
Verkleinern Sie Ihr Level.
-
Wählen Sie die großen Blocks an (oder alle) und setzen Sie die
Flächen auf “flat”.
F:
Ich habe eine Variable so definiert: var
force[3];
und sagen wir ich mache die Zuweisung force
= 4;
wird dann der Inhalt von force 4, 4, 4 sein oder 4, 0, 0?
A:
(4, 0, 0); übrigens var
force[3]; ist ähnlich
(und funktioniert genauso) wie
var force;
F:
Hat irgendjemand ein Beispiel für eine bearbeitete Acknex.wdf Datei?
A:
Hier ist mein einfaches, aber voll funktionsfähiges WDF Template.
Stellen Sie sicher, dass das Bild 256 Farben hat und nicht True Color.
WINDOW
WINSTART
{
TITLE "(c) Your company 2003";
SIZE 576, 288; // size of the image in pixels
MODE image; // standard
BG_COLOR RGB(0,0,0); // black background
FRAME FTYP1, 0, 0, 576, 288; // same size here
SET FONT "Arial", RGB(0,0,0); // draw black text
PICTURE <your_image.bmp> , opaque, 0, 0;
}