Kochbuch: Schwenkschiebetüren: Unterschied zwischen den Versionen

Aus LOTUS Wiki DE
Wechseln zu: Navigation, Suche
K (1 Version importiert: Init)
(Updated from LOTUS Lexicon on 2025-01-21)
 
Zeile 1: Zeile 1:
[[Category: Lexikon]]
{{ArticleMetadata
{{Unvollständige Seite}}
|author=Janine
Schwenkschiebetüren animieren und steuern
|created_date=2020-11-22T23:55:40+01:00
|modified_date=2020-11-22T23:55:40+01:00
|source_url=https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/
}}
 
Schwenkschiebetüren animieren und steuern  
 
(alt, Artikel ggf. mit neuer Vorgehensweise neu strukturieren)
(alt, Artikel ggf. mit neuer Vorgehensweise neu strukturieren)


== Schwenkschiebetüren animieren ==
== Schwenkschiebetüren animieren ==
 
Ziel: Schwenkschiebetüren animieren und steuern
Ziel: Schwenkschiebetüren animieren und steuern
 


Zutaten: Eine Schalter-Variable (boolean), Türflügel als separates Mesh
Zutaten: Eine Schalter-Variable (boolean), Türflügel als separates Mesh
 


Werkzeug: Content Tool --> Object & Vehicle Tool + Script Editor
Werkzeug: Content Tool --> Object & Vehicle Tool + Script Editor
 


Ergebnis: Die Türen schwenken zuerst nach außen und fahren dann zur jeweiligen Seite auf
Ergebnis: Die Türen schwenken zuerst nach außen und fahren dann zur jeweiligen Seite auf
Zeile 15: Zeile 28:
Zubereitung:
Zubereitung:


#In der Script-Hauptdatei im Abschnitt <code>PUBLIC_VARS</code> die beiden Variablen deklarieren, die nachher die Animation steuern, <code>Door_1_pos_x: single;</code> und <code>Door_1_pos_y: single;</code>
  1. In der [[https://www.lotus-simulator.de/lexikon/index.php?entry/11-script-system/#2-Aufbau|Script-Hauptdatei]] im Abschnitt `PUBLIC_VARS` die beiden Variablen deklarieren, die nachher die Animation steuern, `Door_1_pos_x: single;` und `Door_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.
  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.
#Innerhalb der <code>Simstep</code>-Prozedur in der Hauptdatei muss die neu angelegte Prozedur aufgerufen, also eingetragen werden.
  3. 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).
  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).
#Anlegen des "Schwenkens nach außen"
  5. 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
    1. Im Object- und Vehicle-Tool unter "Animationen" den [[https://www.lotus-simulator.de/lexikon/index.php?entry/62-wagenkasten/&synonym=31|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
    2. 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:
    3. Die neu angelegte Animation auswählen und "Bearbeiten" klicken --> Folgende Parameter ändern:  
###<code>Y</code> und <code>Z</code> sind <code>0</code>, <code>X</code> ist für Türen im Wagen rechts <code>1</code>, für Türen links im Wagen <code>-1</code>
      1. `Y` und `Z` sind `0`, `X` ist für Türen im Wagen rechts `1`, für Türen links im Wagen `-1`
###Bei <code>Variable</code> wird nun <code>Door_1_pos_x</code> ausgewählt - ist das nicht möglich, wurde entweder die Variable nicht unter <code>PUBLIC_VARS</code> deklariert oder das Script nicht neu importiert.
      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.
###Bei <code>Verschiebung bei Var = B (m)</code> wird die Strecke eingetragen, die die Tür nach außen laufen soll. In unserem Beispiel <code>0,2 m</code>.
      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.
###Mit OK bestätigen.
      4. Mit OK bestätigen.
#Anlegen des "Fahrens zur Seite"
  6. Anlegen des "Fahrens zur Seite"  
##Erster Türflügel (der 1. in Fahrtrichtung)
    1. 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
      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
###Die neu angelegte Animation auswählen und "Bearbeiten" klicken --> Folgende Parameter ändern:
      2. Die neu angelegte Animation auswählen und "Bearbeiten" klicken --> Folgende Parameter ändern:  
####<code>X</code> und <code>Z</code> sind <code>0</code>, <code>Y</code> ist <code>1</code>, weil dieser Türflügel in Fahrtrichtung laufen wird
        1. `X` und `Z` sind `0`, `Y` ist `1`, weil dieser Türflügel in Fahrtrichtung laufen wird
####Bei <code>Variable</code> wird nun <code>Door_1_pos_y</code> ausgewählt
        2. Bei `Variable` wird nun `Door_1_pos_y` ausgewählt
####Bei <code>Verschiebung bei Var = B (m)</code> wird nun die Strecke eingetragen, die dieser Türflügel nach vorn laufen wird. In unserem Beispiel <code>0,5 m</code>.
        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.
####Mit OK bestätigen.
        4. Mit OK bestätigen.
###Sicherstellen, dass unter "Animationen" immer noch die eben gerade angelegte Animation ("Fahren zur Seite") ausgewählt ist!
      3. 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.
      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.
###Sind alle Meshs des Türflügels ausgewählt, den Button "Mesh hinzufügen/entfernen" erneut betätigen und damit den Vorgang beenden.
      5. 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 <code>Y</code> auf <code>-1</code> setzen, da dieser Türflügel entgegen der Fahrtrichtung laufen wird.
    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. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_1_c4c681|]]//in der Hauptdatei deklarieren:
  2. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_2_c4c681|]]
  3. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_3_c4c681|]] {PUBLIC_VARS
  4. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_4_c4c681|]] ...
  5. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_5_c4c681|]] Door_1_pos_x: single;
  6. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_6_c4c681|]] Door_1_pos_y: single;
  7. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_7_c4c681|]] ...
  8. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_8_c4c681|]] }
  9. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_9_c4c681|]]
  10. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_10_c4c681|]] \-----------------------------------------
  11. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_11_c4c681|]]
  12. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_12_c4c681|]] //in der Hauptdatei oder einer separat eingebundenen Script-Datei deklarieren:
  13. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_13_c4c681|]]
  14. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_14_c4c681|]] const
  15. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_15_c4c681|]] DOOR_SPEED_S = 0.5; // Tür benötigt 2 Sekunden zum Auf-/Zulaufen, hiervon der Kehrwert ist 0,5
  16. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_16_c4c681|]] DOOR_LIFT_PART = 0.1; // 10% des Laufweges wird für das Herausschwenken der Türen benötigt
  17. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_17_c4c681|]]
  18. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_18_c4c681|]] var
  19. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_19_c4c681|]] door_1_target: boolean; //Schalter-Stellung - true = öffnen; false = schließen;
  20. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_20_c4c681|]] door_1_pos: single; //Hilfsvariable - Position der Tür über den gesamten Vorgang
  21. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_21_c4c681|]]
  22. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_22_c4c681|]] procedure Door1_SimStep; //diese Prozedur muss im Simstep der Haupt-Datei aufgerufen werden!
  23. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_23_c4c681|]] begin
  24. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_24_c4c681|]] if door_target then //Tür soll geöffnet werden, denn Schalter ist auf true
  25. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_25_c4c681|]] begin
  26. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_26_c4c681|]] if door_1_pos < 1 then //falls Tür noch nicht ganz auf
  27. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_27_c4c681|]] door_1_pos := door_1_pos + 1/DOOR_SPEED_S * Timegap //Tür weiter öffnen
  28. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_28_c4c681|]] else //sonst
  29. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_29_c4c681|]] door_1_pos := 1; //Vorgang auf "beendet (auf)" setzen
  30. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_30_c4c681|]] end
  31. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_31_c4c681|]] else //Tür soll geschlossen werden
  32. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_32_c4c681|]] begin
  33. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_33_c4c681|]] if door_1_pos > 0 then //falls Tür noch nicht ganz zu
  34. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_34_c4c681|]] door_1_pos := door_1_pos - 1/DOOR_SPEED_S * Timegap //Tür weiter schließen
  35. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_35_c4c681|]] else //sonst
  36. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_36_c4c681|]] door_1_pos := 0; //Vorgang auf "beendet (zu)" setzen
  37. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_37_c4c681|]] end;
  38. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_38_c4c681|]]
  39. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_39_c4c681|]] if door_1_pos < DOOR_LIFT_PART then //Gesamtvorgang ist unter 10%
  40. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_40_c4c681|]] begin
  41. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_41_c4c681|]] Door_1_pos_x := door_1_pos * 1/DOOR_LIFT_PART; //Berechnung des "Schwenks nach außen"
  42. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_42_c4c681|]] Door_1_pos_y := 0; //Während des "Schwenks nach außen" findet keine Öffnung der Flügel statt
  43. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_43_c4c681|]] end
  44. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_44_c4c681|]] else //sonst
  45. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_45_c4c681|]] begin
  46. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_46_c4c681|]] Door_1_pos_x := 1; //Schwenk nach außen findet nicht weiter statt, ist abgeschlossen
  47. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_47_c4c681|]] Door_1_pos_y := (door_1_pos - DOOR_LIFT_PART) * 1/(1-DOOR_LIFT_PART) //Berechnung der "Fahrt zur Seite"
  48. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_48_c4c681|]] end;
  49. [[https://www.lotus-simulator.de/lexikon/index.php?entry/285-kochbuch-schwenkschiebet%C3%BCren/#codeLine_49_c4c681|]] end;


<pre>
Alles anzeigen
//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;
</pre>


Bonus: Die Variable <code>door_1_target</code> mit einem Schalter verbinden, um die Tür aus dem Fahrzeug heraus zu steuern und so die Animation zu testen.
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.

Aktuelle Version vom 21. Januar 2025, 22:55 Uhr

Vorlage:ArticleMetadata

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.