Kochbuch: Schwenkschiebetüren: Unterschied zwischen den Versionen
Aus LOTUS Wiki DE
imported>DrBlackError (Die Seite wurde neu angelegt: „Category: Lexikon {{Unvollständige Seite}} Schwenkschiebetüren animieren und steuern (alt, Artikel ggf. mit neuer Vorgehensweise neu strukturieren) == S…“) |
K (1 Version importiert: Init) |
Aktuelle Version vom 23. Oktober 2023, 22:03 Uhr
Schwenkschiebetüren animieren und steuern (alt, Artikel ggf. mit neuer Vorgehensweise neu strukturieren)
Schwenkschiebetüren animieren
Ziel: Schwenkschiebetüren animieren und steuern
Zutaten: Eine Schalter-Variable (boolean), Türflügel als separates Mesh
Werkzeug: Content Tool --> Object & Vehicle Tool + Script Editor
Ergebnis: Die Türen schwenken zuerst nach außen und fahren dann zur jeweiligen Seite auf
Zubereitung:
- In der Script-Hauptdatei im Abschnitt
PUBLIC_VARS
die beiden Variablen deklarieren, die nachher die Animation steuern,Door_1_pos_x: single;
undDoor_1_pos_y: single;
- Im Script die Konstanten, die restlichen Variablen und die gewünschte Prozedur deklarieren. Dies kann entweder in der Hauptdatei selbst geschehen, oder ausgelagert werden.
- Innerhalb der
Simstep
-Prozedur in der Hauptdatei muss die neu angelegte Prozedur aufgerufen, also eingetragen werden. - Die Prozedur implementieren, die die Animation steuert. Sind die Script-Arbeiten erledigt, muss das Script im Object- und Vehicle-Tool importiert werden (siehe ganz oben).
- Anlegen des "Schwenkens nach außen"
- Im Object- und Vehicle-Tool unter "Animationen" den Wagenkasten auswählen, der die betreffende Tür beherbergt --> "Hinzufügen" klicken
- Der Animation einen selbsterklärenden Namen vergeben und Typ "Verschiebung entlang einer Achse" auswählen --> OK drücken
- Die neu angelegte Animation auswählen und "Bearbeiten" klicken --> Folgende Parameter ändern:
Y
undZ
sind0
,X
ist für Türen im Wagen rechts1
, für Türen links im Wagen-1
- Bei
Variable
wird nunDoor_1_pos_x
ausgewählt - ist das nicht möglich, wurde entweder die Variable nicht unterPUBLIC_VARS
deklariert oder das Script nicht neu importiert. - Bei
Verschiebung bei Var = B (m)
wird die Strecke eingetragen, die die Tür nach außen laufen soll. In unserem Beispiel0,2 m
. - Mit OK bestätigen.
- Anlegen des "Fahrens zur Seite"
- Erster Türflügel (der 1. in Fahrtrichtung)
- Unter "Animationen" nun die zuvor angelegte Schwenk-Animation auswählen --> "Hinzufügen" klicken, Namen vergeben und "Verschieben entlang Achse" auswählen --> OK drücken
- Die neu angelegte Animation auswählen und "Bearbeiten" klicken --> Folgende Parameter ändern:
X
undZ
sind0
,Y
ist1
, weil dieser Türflügel in Fahrtrichtung laufen wird- Bei
Variable
wird nunDoor_1_pos_y
ausgewählt - Bei
Verschiebung bei Var = B (m)
wird nun die Strecke eingetragen, die dieser Türflügel nach vorn laufen wird. In unserem Beispiel0,5 m
. - Mit OK bestätigen.
- Sicherstellen, dass unter "Animationen" immer noch die eben gerade angelegte Animation ("Fahren zur Seite") ausgewählt ist!
- Den Button "Mesh hinzufügen/entfernen" betätigen und anschließend alle Meshs auswählen, die zu diesem Türflügel gehören - die Auswahl kann direkt am Vorschaubild des Fahrzeuges erfolgen oder in der Mesh-Liste rechts. Sollte das Tool in einer Meldung nach Mesh-Koordinaten fragen, diese Frage mit "Nein" quittieren.
- Sind alle Meshs des Türflügels ausgewählt, den Button "Mesh hinzufügen/entfernen" erneut betätigen und damit den Vorgang beenden.
- Den Vorgang für den zweiten Türflügel wiederholen - diesmal den Parameter
Y
auf-1
setzen, da dieser Türflügel entgegen der Fahrtrichtung laufen wird.
- Erster Türflügel (der 1. in Fahrtrichtung)
//in der Hauptdatei deklarieren: {PUBLIC_VARS ... Door_1_pos_x: single; Door_1_pos_y: single; ... } ----------------------------------------- //in der Hauptdatei oder einer separat eingebundenen Script-Datei deklarieren: const DOOR_SPEED_S = 0.5; // Tür benötigt 2 Sekunden zum Auf-/Zulaufen, hiervon der Kehrwert ist 0,5 DOOR_LIFT_PART = 0.1; // 10% des Laufweges wird für das Herausschwenken der Türen benötigt var door_1_target: boolean; //Schalter-Stellung - true = öffnen; false = schließen; door_1_pos: single; //Hilfsvariable - Position der Tür über den gesamten Vorgang procedure Door1_SimStep; //diese Prozedur muss im Simstep der Haupt-Datei aufgerufen werden! begin if door_target then //Tür soll geöffnet werden, denn Schalter ist auf true begin if door_1_pos < 1 then //falls Tür noch nicht ganz auf door_1_pos := door_1_pos + 1/DOOR_SPEED_S * Timegap //Tür weiter öffnen else //sonst door_1_pos := 1; //Vorgang auf "beendet (auf)" setzen end else //Tür soll geschlossen werden begin if door_1_pos > 0 then //falls Tür noch nicht ganz zu door_1_pos := door_1_pos - 1/DOOR_SPEED_S * Timegap //Tür weiter schließen else //sonst door_1_pos := 0; //Vorgang auf "beendet (zu)" setzen end; if door_1_pos < DOOR_LIFT_PART then //Gesamtvorgang ist unter 10% begin Door_1_pos_x := door_1_pos * 1/DOOR_LIFT_PART; //Berechnung des "Schwenks nach außen" Door_1_pos_y := 0; //Während des "Schwenks nach außen" findet keine Öffnung der Flügel statt end else //sonst begin Door_1_pos_x := 1; //Schwenk nach außen findet nicht weiter statt, ist abgeschlossen Door_1_pos_y := (door_1_pos - DOOR_LIFT_PART) * 1/(1-DOOR_LIFT_PART) //Berechnung der "Fahrt zur Seite" end; end;
Bonus: Die Variable door_1_target
mit einem Schalter verbinden, um die Tür aus dem Fahrzeug heraus zu steuern und so die Animation zu testen.