entmove.c

Diese Include-Datei enthält grundlegende Funktionen zum Verändern von Entity-Positionen und Winkeln, z.B. Drehen, Hinwenden auf ein Ziel, Bewegen zu einer bestimmten Position oder Bewegung entlang eines Pfades mit einer bestimmten Geschwindigkeit. Die Funktionen sind einfach genug, um sie auf einen Blick zu verstehen und aus ihnen zu lernen. Wenn Sie sie ändern möchten, bitte bearbeiten Sie eine entmove.c Kopie in Ihrer Work-Ordner, und nicht die Original-Datei im include-Ordner.

ent_rotate (ENTITY* ent, var speed_pan, var speed_tilt, var speed_roll)

Startet eine permanente Rotation um die aktuelle pan, tilt, und roll-Achse der Entity mit den angegebenen Winkelgeschwindigkeiten.

Parameters:

ent - Entity-Pointer
speed_pan - Rotationsrate um die pan Achse in Grad pro Tick.
speed_tilt - Rotationsrate um die tilt Achse in Grad pro Tick.
speed_roll - Rotationsrate um die roll Achse in Grad pro Tick.

Remarks:

Example:

action rotating_door()
{ while(1) {
ent_rotate(me,2,0,0); // rotate about the entity's vertical axis with 2 degrees per tick wait(-90/16); // wait ~6 seconds (= 180 degrees) ent_rotate(me,0,0,0); // stop the rotation wait(-1); // wait 1 second
ent_rotate(me,-2,0,0); // rotate back wait(-90/16); // wait ~6 seconds (= 180 degrees) } }
 

ent_turnto (ENTITY* ent, ANGLE* to, var aspeed)

Startet eine Rotation in Richtung eines angegebenen Zielwinkels mit einer vorgegebenen Winkelgeschwindigkeit; stoppt wenn der Zielwinkel erreicht ist.

Parameters:

ent - Entity-Pointer
to - Euler-Zielwinkel
aspeed - Rotationsgeschwindigkeit in Grad pro Tick.

Remarks:

Example:

ent_turnto(me,vector(90,0,0),2);
wait_for_my(ent_turnto);

 

ent_faceto (ENTITY* ent, VECTOR* pos, var aspeed)

Startet eine Rotation mit einer vorgegebenen Winkelgeschwindigkeit, bis die Entity zu einer bestimmten Position hin ausgerichtet ist; z.B. für Geschütztürme.

Parameters:

ent - Entity-Pointer
pos - Zielposition
aspeed - Rotationsgeschwindigkeit in Grad pro Tick.

Remarks:

Example:

action turret()
{
  while(1) {
    if (player) {
      ent_faceto(me,player.x,10); // turn towards the player
wait_for_my(ent_turnto); // wait until target angle reached fire(); // fire at player's previous position } wait(1); } }

 

ent_moveto (ENTITY* ent, VECTOR* pos, var speed)

Startet eine Bewegung ohne Kollisionserkennung zu einer absoluten Zielposition in Weltkoordinaten.

ent_moveby (ENTITY* ent, VECTOR* pos, var speed)

Startet eine Bewegung ohne Kollisionserkennung zu einer Zielposition relativ zur Entity.

Parameters:

ent - Entity-Pointer
pos - Zielposition in Welt- oder Entity-Koordinaten.
speed - Geschwindigkeit in Quant pro Tick.

Remarks:

Example:

action lift()
{
  while(1) {
    ent_moveby(me,vector(0,0,100),1); // move the lift 100 units upwards
wait_for_my(ent_moveto); // wait until target position reached wait(-10); // stop the lift at the upper position for 10 seconds ent_moveby(me,vector(0,0,-100),1); // move the lift 100 units downwards
wait_for_my(ent_moveto); // wait until target position reached wait(-10); // stop the lift at the lower position for 10 seconds } }

 

ent_movepath (ENTITY* ent, char* pathname, var speed,var mode)

Bewegt die Entity entlang einem Actor-Pfad.

Parameters:

ent - Entity-Pointer
pathname - Name des Pfads, char* oder STRING*; oder NULL für einen Pfad, der der Entity bereits zugewiesen wurde.
speed - Geschwindigkeit in Quant pro Tick, oder 0 zum Stoppen der Entity.
mode - 1 bewegt die Entity so, dass die Füße den Boden berühren; 2 dreht die Entity in Bewegungsrichtung; 3 beides.

Remarks:

Example:

action patrol()
{
  ent_movepath(me,"path1",5,1+2);
}

See Also:

ang_add, proc_status

► latest version online