Bewegen von Statics und Moveables
Mit diesem unten aufgeführten Scripteintrag lassen sich in der TRNG Engine Objekte (Statics und Moveables) bewegen und somit tolle Effekte erzeugen.
Nötig dafür ist folgender Syntax, der etwas verwirrend erscheinen mag, gehen wir alle Syntaxwerte Punkt für Punkt durch.
Syntax: Parameters=PARAM_MOVE_ITEM, IdParamList, Flags (FMOV_...), IndexItem, Direction (DIR_...), Distance, Speed, MovingSound, FinalSound, Extra
Bereich im Script: [Level]
IdParamList
Hier gibt man eine fortlaufende Nr. ein um die unterschiedlichen PARAM_MOVE_ITEM Scriptbefehle unterscheiden zu können. Praktischerweise fängt man bei 1 an, dann den nächsten mit 2 usw.
Es gibt folgende Flipeffect Trigger (F) um Statics bzw. Objekte mit PARAM_MOVE_ITEM zu bewegen:
Statics F166: Statics. Move. Move static with data in <&>parameters list Moveables F167: Moveable. Move. Move moveable with data in <&>paramters list |
Flags (FMOV_...)
Hier kann man verschiedene Verhaltensweisen und Eigenschaften des zu bewegenden Objektes festlegen. Möchte man hier nichts verwenden, setzt man einfach ein IGNORE.
Mehrere FMOV_... können durch ein + miteinander verbunden werden.
Bei einigen ist die "vertikale Geschwindigkeit" unveränderbar, bei anderen kann man sie mit dieser Formel verändern: Formel: PercentageOfChangeVerticalSpeed * 256 + HorizontalSpeed PercentageOFChangeVerticalSpeed: Bei keiner Veränderung gibt man einen Wert von 100 an.Bei doppelter vertikaler Geschwindigkeitsänderung also 200. Bei einer halben Änderung 50 usw. |
FMOV_ANVIL_GRAVITY
Wird für vertikale Bewegung verwendet, simuliert ein sehr schweres Objekt mit starker Schwerkraft, vergleichbar mit einem Amboss (Anvil =Amboss auf deutsch)
FMOV_APOLLO_GRAVITY
Wird für vertikale Bewegung verwendet, startet wie eine Rakete langsam bis zur maximalen Geschwindigkeit und bleibt dann oben. Vertikale Geschwindigkeit kann mit obiger Formel verändert werden.
FMOV_APPLE_GRAVITY
Wird für vertikale Bewegung verwendet, simuliert einen Apfel, der vom Baum fällt. Vertikale Geschwindigkeit kann mit obiger Formel verändert werden.
FMOV_CAR_SPEED
Verhalten, wie bei einem Auto, welches langsam bis zu einer gewissen Maximalgeschwindigkeit steigt und diese dann hält.
Der Wert, den wir bei SPEED eingeben wird als Prozentzahl angesehen. 100 verändert nichts, 200 verdoppelt und 50 reduziert um die Hälfte usw.
FMOV_EXPLOSION_GRAVITY
Dieser Eintrag bewegt das Element beim Start mit der höchsten Geschwindigkeit nach oben und nimmt dann schnell ab.
Man kann die maximale Anfangsgeschwindigkeit ändern, indem man den Prozentsatz der Variation im Geschwindigkeitsfeld verwendet.
Siehe die Beschreibung von FMOV_FROG_JUMP_GRAVITY, um zu erfahren, wie die Formel zur Eingabe in dieses Feld berechnet wird.
FMOV_EXPLOSION_SPEED
Dieser Eintrag gibt dem Item eine Geschwindigkeit, die vom Maximalwert ausgeht und im Verlauf langsam genug abnimmt (dafür auf hohen Werten bleibt).
Dies passiert, wenn eine Explosion alle Gegenstände wegschleudert, die ihr nahe sind.
Hinweis:
Warnung, es gibt keine Überprüfung auf Kollisionen. Der Gegenstand stoppt sein Rennen erst, wenn er die Distanz erreicht, die Sie im Distanzfeld eingestellt haben.
Der Wert, den man in das Geschwindigkeitsfeld eingibt, wird als Prozentsatz verwendet, um die voreingestellte Geschwindigkeit dieser Explosionsbewegung zu ändern.
Wenn man 100 eingibt, wird keine Änderung durchgeführt. 200 verdoppelt die Geschwindigkeit (nicht empfohlen, erhöhen Sie diese Geschwindigkeit), 50 reduziert die voreingestellte Geschwindigkeit um die Hälfte. usw.
FMOV_FROG_JUMP_GRAVITY
Dieser Eintrag wird den Gegenstand nach oben bewegen und dann herunterfallen, wie ein Sprung eines Frosches. Die Form des Sprungs sollte regelmäßig sein, d.h. der aufsteigende (Anfangs-)Teil hat die umgekehrte Form im absteigenden Endteil.
FMOV_HEAVY_ALL
Aktiviert alle schweren Auslöser, auf die das Objekt auf seinem Weg trifft. Man kan diese Funktion verwenden, um eine Kette von Ereignissen im Spiel zu erstellen.
FMOV_HEAVY_AT_END
Aktiviert einen weiteren schweren Abzug im letzten Sektor des Pfads.
FMOV_IGNORE_FLOOR_COLLISION
Wenn die Bewegung eine neue Richtung oder Geschwindigkeit oder einen neuen Schwerkraftmodus beeinflusst (neues Management ab Version 1.2.2.7), verbietet die Engine standardmäßig dem Gegenstand, im Boden zu „sinken“.
Das bedeutet, wenn man eine AUF/AB-Richtung oder einen Schwerkraftmodus einstellt, der das Objekt nach unten bewegt, wird es gestoppt, wenn es den Boden erreicht.
Auch bei horizontaler Bewegung, wenn der Gegenstand einen Punkt des Bodens erreicht, der höher als seine Position ist, bewegt der Motor den Gegenstand nach oben, um über dem Boden zu stehen.
Wie auch immer, wenn man möchte, dass der Gegenstand im Boden versinken kann, kann man das FMOV_IGNORE_FLOOR_COLLISION hinzufügen, und die Engine führt keine Kontrolle über Bodenkollisionen durch.
FMOV_INFINITE_LOOP
Wenn man diesen Eintrag nimmt, wird die Bewegung endlos und aus diesem Grund muss man einen Flipeffekt-Trigger verwenden, um sie zu stoppen (siehe F177-, F178-, F179-Trigger).
FMOV_LEAF_GRAVITY
Wenn der Gegenstand weit vom Boden entfernt ist, bewegt er sich sehr langsam ohne Beschleunigung nach unten, wie ein leichtes Blatt, das sich langsam nach unten bewegt.
Hinweis:
Die einzige Kollisionsprüfung gilt für den Boden, nicht für andere Elemente oder Wände oder Decken.
Man kann die voreingestellte vertikale Geschwindigkeit ändern, indem man einen Prozentsatz der Variation in das Geschwindigkeitsfeld eingibt. Siehe die Beschreibung von FMOV_FROG_JUMP_GRAVITY, um zu erfahren, wie die Formel zur Eingabe in dieses Feld berechnet wird.
FMOV_MAGNET_SPEED
Diese Eintrag setzt eine nicht konstante horizontale Geschwindigkeit für das Objekt.
Der Gegenstand beginnt langsam, seine Geschwindigkeit zu erhöhen, bis er diese Geschwindigkeit immer schneller erhöht. Wie ein Gegenstand, der von einer (fernen) Quelle angezogen wird.
Der Wert, den man in das Geschwindigkeitsfeld eingibt, wird als Prozentsatz verwendet, um die voreingestellte Geschwindigkeit dieses Effekts zu ändern.
Wenn man 100 eingibt, wird keine Änderung durchgeführt. 200 verdoppelt die Geschwindigkeit, 50 reduziert die voreingestellte Geschwindigkeit um die Hälfte. usw.
FMOV_MAN_GRAVITY
Dieser Eintrag bewegt sich am Gegenstand nach unten, wenn er sich über dem Boden befindet.
Die vertikale Geschwindigkeit wird etwa so hoch sein wie die eines großen Mannes, der ins Leere fällt.
FMOV_TRIGGERS_ALL
Aktivierz alle gängigen Auslöser, auf die das Element in seinem Pfad trifft. Die "gemeinsamen" Auslöser sind die von Lara aktivierten Auslöser. Man kann diesen Eintrag verwenden, um diesen Gegenstand wie den mechanischen Skarabäus zu bearbeiten, um eine Falle zu aktivieren.
FMOV_USE_EXTRA_ACTOR_INDEX
Mit diesem Eintrag ersetzt man den angegebenen Wert im IndexItem-Feld durch den Index des aktuellen Feindes, der als zusätzlicher Akteur festgelegt wurde.
Dies ist eine interessante Möglichkeit, denselben Parameter = PARAM_MOVE_ITEM immer wieder zu verwenden, um verschiedene Feinde zu bewegen. Man legt einfach einen anderen Feind als zusätzlichen Akteur fest und kann dasselbe PARAM_MOVE_ITEM erneut verwenden, um auch diesen neuen Feind zu bewegen.
FMOV_USE_LEADING_ACTOR_INDEX
Mit diesem Eintrag ersetzt man den angegebenen Wert im IndexItem-Feld durch den Index des aktuellen Feindes, der als führender Akteur festgelegt ist.
Dies ist eine interessante Möglichkeit, denselben Parameter = PARAM_MOVE_ITEM immer wieder zu verwenden, um verschiedene Feinde zu bewegen. Du legst einfach als Hauptdarsteller einen anderen Gegner fest und kannst wieder dasselbe PARAM_MOVE_ITEM verwenden, um auch diesen neuen Gegner zu bewegen.
FMOV_WAIT_STAND_ON_FLOOR
Standardmäßig wird die Bewegung abgeschlossen, wenn die im Feld „Distance“ angegebene Entfernung erreicht ist.
Wie auch immer, wenn man eine Art Schwerkraft einstellt und der Gegenstand, sobald er die Entfernung zurückgelegt hat, die sich noch über dem Boden befindet, herunterfällt, wirkt sich das Stoppen der Bewegung auf einen seltsamen Effekt aus: Der Gegenstand wird im Leeren in einer gewissen Höhe über dem Boden anhalten.
Wenn man diese Situation vermeiden möchte, kann man FMOV_WAIT_STAND_ON_FLOOR hinzufügen, und die Bewegung wird nur gestoppt, wenn abgesehen von der zurückgelegten Strecke der Gegenstand den Boden erreicht hat und herunterfällt.
IndexItem
Die Index -Nr. des Objektes.
Dieses erfährt man durch Anklicken des Objektes.
Direction (DIR_...)
Hier kann man verschiedene Richtungsangaben mit eventuellen Zusätzen angeben.
Richtungsangaben:
DIR_UP =bewegt sich nach oben
DIR_DOWN = bewegt sich nach unten
DIR_WEST = bewegt sich nach Westen
DIR_EAST = bewegt sich nach Osten
DIR_SOUTH = bewegt sich nach Süden
DIR_NORTH = bewegt sich nach Norden
Anmerkung:
Bei den Himmelsrichtungen Westen, Osten, Süden, Norden werden hier die Himmelsrichtungen vom alten Winroom Editor genommen. Verwendet man den Tomb Editor, setzt man am besten ein Häkchen unter "Tools > Editor Options > 3D rendering > Use winroomedit cardinal direction hints", damit die Himmelsrichtungen so angezeigt werden, wie man sie im Script Befehl eintragen muss.
(siehe auch: Himmelsrichtungen NGLE vs. TE)
DIR_FORWARD = Objekt bewegt sich in die Richtung, in der es zeigt.
DIR_INVERT_DIRECTION = wird in Verbindung mit einem anderen DIR_ Befehl gebraucht.
Wenn man z.b. DIR_TURNING_RIGHT_90+DIR_INVERT_DIRECTION zusammen benutzt, bewegt sich das Objekt in die andere Richtung und dreht sich dann nach rechts.
Bewegungen mit Drehungen:
DIR_TURNING_LEFT_45 = Objekt bewegt sich vorwärts und dreht sich dabei langsam um 45 Grad nach links.
DIR_TURNING_LEFT_90 = = Objekt bewegt sich vorwärts und dreht sich dabei langsam um 90 Grad nach links.
DIR_TURNING_RIGHT_45 = Objekt bewegt sich vorwärts und dreht sich dabei langsam um 45 Grad nach rechts.
DIR_TURNING_RIGHT_90 = Objekt bewegt sich langsam vorwärts und dreht sich dabei langsam um 90 Grad nach rechts.
DIR_LU_TURNING_180 = Objekt bewegt sich vorwärts und dreht sich dabei nach links so lange bis es sich am Ende um 180 Grad gedreht hat.
DIR_RU_TURNING_180 = Objekt bewegt sich vorwärts und dreht sich dabei nach rechts so lange bis es sich am Ende um 180 Grad gedreht hat.
Bewegungen in Verbindung mit Lara:
DIR_LARA_FACING = bewegt sich in die Richtung in die Lara schaut. (Könnte z.B. dazu benutzt werden, wenn Lara etwas von sich wegwirft).
DIR_HEAD_FOR_LARA = Objekt bewegt sich auf dorthin, wo Lara sich befindet.
Bewegungen in Zwischensequenzen (Cutscenes):
DIR_DIRECTION_LARA_LEADING_ACTOR =Schnittpunkt der Bewegung ist Lara und der Enemy (Leading Actor).
DIR_HEAD_FOR_LEADING_ACTOR = Objekt bewegt sich auf Enemy (Leading Actor) zu.
DIR_LEADING_ACTOR_FACING = Objekt bewegt sich dorhin, wo der Enemy (Leading Actor) hinschaut.
DIR_HEAD_FOR_EXTRA_ACTOR = Objekt bewegt sich auf den Extra Actor zu.
werden beim Action Trigger 87 verwendet.
Distance
Hier setzt man fest, wie weit sich ein Objekt bewegt.
1 Square = 1024
1/2 Square = 512
ein Klick = 256
Empfehlung ist hier, immer mit 256 zu multiplizieren um Probleme zu vermeiden.
Die größte Entfernung ist 64512 was 63 Squares entspricht.
Speed
Hier können wir die Geschwindigkeit eingeben, mit der sich ein Objekt bewegt.
Die Erklärung von Paolone ist für mich zu schwierig zu verstehen. Ich habe folgende Formel, die mir hilft die Zeit zu errechnen, die ein Objekt braucht.
Formel:
Zeit = Distance geteilt durch (Speed x 30 Sekunden)
Als Beispiel nehmen wir mal ein Objekt welches sich über 3 Blöcke (1024 x 3 = 3072) bewegt.
Als Speed geben wir mal "1" ein.
Zeit = 3072 / (1 x 30 Sekunden)
Ergebnis: 102,4 Sekunden braucht das Objekt um über 3 Blocks zu fahren.
Als Empfehlung für Speed wird hier ein Zahlenbereich von 8- 64 gegeben.
64 als Speed wäre bei unserem Beispiel von 3 Blöcken (3072).
3072/ (64x 30) = 1,6 Sekunden
MovingSound
Hier kann man einen Sound eingeben der beim Bewegen ertönen soll. Sinnvoll wäre hier z.b. der Pushable Sound der ertönt, wenn Lara einen Block schiebt.
Man kann in TombIDE unter Reference Brwoser in der Sounds sfx indices list nachsehen, um die Nr. zu erfahren.
Für den Pushable Sound würde man hier "63" eingeben.
Der Sound befindet sich im Loop Modus, das heißt er wiederholt sich beim Bewegen des Objektes solange, bis das Objekt angehalten hat.
Möchte man keinen Sound haben, gibt man hier "IGNORE" ein.
FinalSound
Hier kann man einen Sound eingeben der am Ende ertönen soll.
Man kann im NG Scripter unter Reference in der Sounds sfx indices list nachsehen, um die Nr. zu erfahren.
Möchte man keinen Sound haben, gibt man hier "IGNORE" ein.
Extra field
Dieser Eintrag ist optional. Man schaut am besten bei den DIR_ ... und FMOV_... Werten, um zu sehen ob man hier was einträgt.
Ansonsten hier einfach ein IGNORE setzen.