Führt eine Kollisionserkennung der gegebenen entity gegen ihre Umgebung aus und dreht sie dabei um die angegebenen Euler-Winkel (angle). Hat die Entity eine nicht-symmetrische Kollisionsform und Hindernisse sind in der Nähe, nehmen Sie diese Funktion zum Drehen einer Entity anstatt ihre Winkel direkt zu verändern. Andernfalls könnte die Entity innerhalb eines anderen sich drehenden Objektes enden.
entity | Zu drehende Entity |
angle | Drehwinkel |
mode | Kollisions- und Dreh-Modus, s. unten |
Die folgenden Kombinationen von mode stehen zur Verfügung:
IGNORE_YOU | ignoriert die you-Entity bei der Kollisionserkennung. |
IGNORE_FLAG2 | A7.73 Ignoriert sämtliche Entities, die FLAG2 gesetzt haben.. |
IGNORE_PASSABLE | ignoriert alle passablen Blocks und Entities. |
IGNORE_PASSENTS | ignoriert passable Modelle und Sprites. |
IGNORE_WORLD | Ignoriert alle Level-Blocks und Terrains (hilfreich bei Türen). |
IGNORE_MAPS | ignoriert alle Map- und Terrain-Entities. |
IGNORE_MODELS | ignoriert alle Modelle. |
IGNORE_SPRITES | ignoriert alle Sprites. |
IGNORE_PUSH | ignoriert sämtliche Entities mit niedrigeren Push-Werten oder demselben Gruppen-Wert wie dem der gegebenen Entity. Um bestimmte Entitygruppen zu ignorieren rufen Sie vor c_rotate bitte c_ignore auf. |
GLIDE | Versucht, beim Auftreffen auf ein Hindernis, den Ursprung der Entity zu verschieben, so dass die Drehung dennoch durchgeführt werden kann. Nützlich zum Drehen eines asymmetrischen Actors. |
USE_AXIS USE_AXISR |
dreht nicht um Welt-Koordinaten, sondern um das Koordinatensystem der Entiy. USE_AXIS dreht den Entity-Winkel um den Winkelparameter (wie ang_add). USE_AXISR dreht den Winkelparameter um den Entity-Winkel (wie ang_rotate). Das ist nötig, um ein beliebig ausgerichtetes Objekt mit Kollisionserkennung, wie etwa ein Flugzeug oder ein Raumschiff, zu drehen. Näheres finden Sie unter ang_add. |
USE_AABB | Dreht die Entity ohne jegliche Kollisionserkennung. |
entity.pan, tilt, roll | Winkel der Entity. |
entity.x, y, z | Entity-Position (wenn GLIDE aktiviert ist). |
normal | Vektor der Normalen des berührten Polygons. |
bounce | Abprallvektor des berührten Polygons. |
in_passable | 1, wenn die Bewegung in einem passablen Block endet. |
in_solid | 1, wenn die Bewegung in einem nicht passablen Block endet. |
event_type | Type des Events. |
action door() { c_setminmax(me); while (1) { if (key_space && my.pan < 180) c_rotate(me,vector(time_step,0,0),IGNORE_WORLD); wait(1); } }