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) |
(kein Unterschied)
| |
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_VARSdie 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:
YundZsind0,Xist für Türen im Wagen rechts1, für Türen links im Wagen-1- Bei
Variablewird nunDoor_1_pos_xausgewählt - ist das nicht möglich, wurde entweder die Variable nicht unterPUBLIC_VARSdeklariert 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:
XundZsind0,Yist1, weil dieser Türflügel in Fahrtrichtung laufen wird- Bei
Variablewird nunDoor_1_pos_yausgewä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
Yauf-1setzen, 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.