Hallo,
Ich habe globale Variablen gewählt, weil der Gegner sie verarbeiten soll, d.h. er soll seine Entscheidungen nach dem Zustand, Status des Players richten.
Anstatt der globalen Variablen kannst du auch Entityskills verwenden:
#define SPEED_X 0
#define SPEED_Y 1
#define SPEED_Z 2
...
my.skill[SPEED_X] = ...;
Die kannst du dann außerdem universell für alle Entities verwenden, die sich bewegen (also auch für die Gegner).
Die bedingten Anweisungen kannst du ebenfalls los werden:
my.skill[SPEED_X] = (key_w - key_s) * 10 * time_step;
my.skill[SPEED_Y] = (key_d - key_a) * 10 * time_step;
Letzte Sache: Die Schwerkraft sollte keine relative sondern eine absolute Geschwindigkeit sein.
c_move (my, vector(my.skill[SPEED_X], my.skill[SPEED_Y], 0), vector(0, 0, my.skill[SPEED_Z]), GLIDE);
Das als kleiner Denkanstoß; ich hoffe es hilft. : )