Kochbuch: Schwenkschiebetüren
Aus LOTUS Wiki DE
Schwenkschiebetüren animieren und steuern
(alt, Artikel ggf. mit neuer Vorgehensweise neu strukturieren)
1 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:
1. In der [[1]] im Abschnitt `PUBLIC_VARS` die beiden Variablen deklarieren, die nachher die Animation steuern, `Door_1_pos_x: single;` und `Door_1_pos_y: single;` 2. Im Script die Konstanten, die restlichen Variablen und die gewünschte Prozedur deklarieren. Dies kann entweder in der Hauptdatei selbst geschehen, oder ausgelagert werden. 3. Innerhalb der `Simstep`-Prozedur in der Hauptdatei muss die neu angelegte Prozedur aufgerufen, also eingetragen werden. 4. 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). 5. Anlegen des "Schwenkens nach außen" 1. Im Object- und Vehicle-Tool unter "Animationen" den [[2]] auswählen, der die betreffende Tür beherbergt --> "Hinzufügen" klicken 2. Der Animation einen selbsterklärenden Namen vergeben und Typ "Verschiebung entlang einer Achse" auswählen --> OK drücken 3. Die neu angelegte Animation auswählen und "Bearbeiten" klicken --> Folgende Parameter ändern: 1. `Y` und `Z` sind `0`, `X` ist für Türen im Wagen rechts `1`, für Türen links im Wagen `-1` 2. Bei `Variable` wird nun `Door_1_pos_x` ausgewählt - ist das nicht möglich, wurde entweder die Variable nicht unter `PUBLIC_VARS` deklariert oder das Script nicht neu importiert. 3. Bei `Verschiebung bei Var = B (m)` wird die Strecke eingetragen, die die Tür nach außen laufen soll. In unserem Beispiel `0,2` m. 4. Mit OK bestätigen. 6. Anlegen des "Fahrens zur Seite" 1. Erster Türflügel (der 1. in Fahrtrichtung) 1. Unter "Animationen" nun die zuvor angelegte Schwenk-Animation auswählen --> "Hinzufügen" klicken, Namen vergeben und "Verschieben entlang Achse" auswählen --> OK drücken 2. Die neu angelegte Animation auswählen und "Bearbeiten" klicken --> Folgende Parameter ändern: 1. `X` und `Z` sind `0`, `Y` ist `1`, weil dieser Türflügel in Fahrtrichtung laufen wird 2. Bei `Variable` wird nun `Door_1_pos_y` ausgewählt 3. Bei `Verschiebung bei Var = B (m)` wird nun die Strecke eingetragen, die dieser Türflügel nach vorn laufen wird. In unserem Beispiel `0,5` m. 4. Mit OK bestätigen. 3. Sicherstellen, dass unter "Animationen" immer noch die eben gerade angelegte Animation ("Fahren zur Seite") ausgewählt ist! 4. 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. 5. Sind alle Meshs des Türflügels ausgewählt, den Button "Mesh hinzufügen/entfernen" erneut betätigen und damit den Vorgang beenden. 2. 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.
Script
Code
1. [[3]]//in der Hauptdatei deklarieren: 2. [[4]] 3. [[5]] {PUBLIC_VARS 4. [[6]] ... 5. [[7]] Door_1_pos_x: single; 6. [[8]] Door_1_pos_y: single; 7. [[9]] ... 8. [[10]] } 9. [[11]] 10. [[12]] \----------------------------------------- 11. [[13]] 12. [[14]] //in der Hauptdatei oder einer separat eingebundenen Script-Datei deklarieren: 13. [[15]] 14. [[16]] const 15. [[17]] DOOR_SPEED_S = 0.5; // Tür benötigt 2 Sekunden zum Auf-/Zulaufen, hiervon der Kehrwert ist 0,5 16. [[18]] DOOR_LIFT_PART = 0.1; // 10% des Laufweges wird für das Herausschwenken der Türen benötigt 17. [[19]] 18. [[20]] var 19. [[21]] door_1_target: boolean; //Schalter-Stellung - true = öffnen; false = schließen; 20. [[22]] door_1_pos: single; //Hilfsvariable - Position der Tür über den gesamten Vorgang 21. [[23]] 22. [[24]] procedure Door1_SimStep; //diese Prozedur muss im Simstep der Haupt-Datei aufgerufen werden! 23. [[25]] begin 24. [[26]] if door_target then //Tür soll geöffnet werden, denn Schalter ist auf true 25. [[27]] begin 26. [[28]] if door_1_pos < 1 then //falls Tür noch nicht ganz auf 27. [[29]] door_1_pos := door_1_pos + 1/DOOR_SPEED_S * Timegap //Tür weiter öffnen 28. [[30]] else //sonst 29. [[31]] door_1_pos := 1; //Vorgang auf "beendet (auf)" setzen 30. [[32]] end 31. [[33]] else //Tür soll geschlossen werden 32. [[34]] begin 33. [[35]] if door_1_pos > 0 then //falls Tür noch nicht ganz zu 34. [[36]] door_1_pos := door_1_pos - 1/DOOR_SPEED_S * Timegap //Tür weiter schließen 35. [[37]] else //sonst 36. [[38]] door_1_pos := 0; //Vorgang auf "beendet (zu)" setzen 37. [[39]] end; 38. [[40]] 39. [[41]] if door_1_pos < DOOR_LIFT_PART then //Gesamtvorgang ist unter 10% 40. [[42]] begin 41. [[43]] Door_1_pos_x := door_1_pos * 1/DOOR_LIFT_PART; //Berechnung des "Schwenks nach außen" 42. [[44]] Door_1_pos_y := 0; //Während des "Schwenks nach außen" findet keine Öffnung der Flügel statt 43. [[45]] end 44. [[46]] else //sonst 45. [[47]] begin 46. [[48]] Door_1_pos_x := 1; //Schwenk nach außen findet nicht weiter statt, ist abgeschlossen 47. [[49]] Door_1_pos_y := (door_1_pos - DOOR_LIFT_PART) * 1/(1-DOOR_LIFT_PART) //Berechnung der "Fahrt zur Seite" 48. [[50]] end; 49. [[51]] end;
Alles anzeigen
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.