Mover Level 1
1. Beschreibung
Mover sind
Vobs, die sich nach Aufruf bewegen. Sie werden z.B. genutzt um grosse Eingänge, wie Burgtore mittels einem Gitter öffnen und wieder verschliessen zu können.
Ihr könnt einen Aufzug bauen, dass ein Npc von Etage A nach Etage B sich transportieren kann,
eine Zugbrücke herunterlassen,
Fallen bauen, dass beim laufen in einem Flur eine Falltür nach unten schnappt,
Spiesse aus dem Boden rammen lassen…. die Möglichkeiten sind schier unerschöpflich…. alles bleibt eurer Phantasie überlassen….
Wer das nachvollziehen will, benötigt Kenntnisse, wie man im Spacer z.B Vobs in die Welt setzt. → Vobs erzeugen.
Wie man diese Objekte im Spacer bewegt, zum platzieren, kann man hier erlernen → vobs_bewegen_und_rotieren
2. Eigenschaften
2.1 Kollision Mover
Leider ist diese Boundingbox keine feste Grösse, sondern verändert sich noch beträchtlich, wenn wir den Mover nicht als „Auf-Ab-Tor“ benutzen würden, sondern als „Drehtor“
2.2 Kollision Umgebung
…. alle Wände, Decken, Böden… kurz gesagt, alles was zur Welt gehört, die im 3DS Prog gebaut wurde, hat zwar Kollision gegenüber Npc´s, aber niemals gegenüber einem im Spacer gesetzten Mover der eingeschaltete Kollision hat. Nur aus diesem Grunde ist es uns möglich, später das Gittertor nach oben durch die Decke zu bewegen.
Aber alles was wir im Spacer gesetzt haben, Vobs, Mobs, etc und den Objekten Kollision eingeschaltet haben, blockiert sofort den Mover an der Stelle, wo sich die Boundingboxen von Mover und SpacerVob/Mob bei der Bewegung des Movers berühren, oder wenn das im Ruhezustand des Movers schon der Fall sein sollte, dass die Boundingboxen kollidieren, dann läuft der Mover erst gar nicht an.
Ich beschreibe das deshalb so präzise, damit ihr später, wenn ihr eure eigenen Mover in die Welt setzt, diese Dinge beachtet und euch nicht wundert, dass euer Mover, einfach keinen „Mucks“ macht, weil diese Zusammenhänge von Mover und Kollision euch nicht bekannt sind.
3. Mover einsetzen
3.2 Jetzt klicken wir mit der rechten Maustaste auf eine freie Stelle im Spacer Hauptfenster. Wenn ihr dabei ein Objekt erwischen/aktivieren würdet, wäre euer Mover ein „Child of Irgendwas“ und das wollen wir nicht.
3.3 Es öffnet sich das kleine Vobfenster mit der Option „Insert Mover“
3.6 Als Visual wählen wir „OC_GATE KITCHEN.3DS“. Das passt deshalb so genau, da das Mass des Durchganges im 3DS Prog beim Bau der WIKI-Testwelt darauf abgestimmt wurde. Auch solche Dinge solltet ihr beim modden in der Vorplanung beachten.
Wir tragen das von uns gewählte Mesh (*.3DS) ganz unten im Filefenster des Objektfensters ein….
Nicht vergessen ab und an mal eure *.Zen abzuspeichern (strg/s)
4. Mover Positionieren
4.1 Wir verschieben das Movergitter in den Durchgang, achten darauf, dass es nicht verkippt ist, am Boden unten abschliesst und mittig eingesetzt ist.
5. Mover Keyframes
5.1 Ein Keyframe ist die Position die ein Mover einnehmen kann. Für eine Geradeausfahrt benötigt man üblicherweise lediglich 2 Keyframes, es sei denn, dass die Fahrt des Movers auf seiner Wegstrecke vom Start zum Ziel unterbrochen werden soll.\\
Das bedarf aber besonderer Steuerelemente → Steuerelemente - benötigen wir aber für diesen Beispielmover nicht!
Angezeigt wird der Keyframe 0,
Grau unterlegt sagt uns, dass der Keyframe 0 noch nicht programmiert ist,
Der Punkt ist gesetzt auf „Insert“ == richtig
Wir klicken zum programmieren des Keyframes 0 auf den Button „new key“
Die grau unterlegte 0 der Keyframeanzeige färbt sich schwarz
Damit ist Keyframe 0 programmiert
6. Mover Testfahrt
6.1 Was immer wieder Verwirrung schafft, ist, dass wenn wir, wie im Punkt oben beschrieben den Button „Apply“ geklickt haben, der Mover zwar in die Ausgangsposition zurückspringt, nun steht er ja wieder auf Keyframe 0, das aber im ObjektPagesfenster nicht angezeigt wird. Dort wird immer noch Keyframe 1 signalisiert.
6.2 Wir können das ändern, wenn wir auf den linken der beiden Pfeilbuttons klicken - dann zeigt sich sofort die 0 zwischen den beiden Pfeilbuttons, ohne dass sich der Mover (Stellung Gitter geschlossen) bewegt.
6.5 RESET
Wenn ihr genug mit den Pfeiltasten gespielt habt :o) dann bitte die Keyframe-Anzeige im ObjektPagesFenster wieder auf Keyframe 0 stellen und den Butten „Apply“ im Objekt-Fenster drücken (reset aller Testaktionen) So lange ihr bei den Frame Positionen nichts neugespeichert habt, erhaltet ihr immer wieder eure in 5.1 - 5.3 programmierte Grundeinstellung. Das ist auch praktisch, wenn ihr mal aus Versehen eine falsche Positionierungstaste (Tastatur) betätigt und das Movergatter verdreht oder verschiebt. Einfach resetten mit dem „Apply“ Button des Objektfensters und alles ist wieder in bester Ordnung, aber nur, wenn ihr nicht zwischenzeitlich den Button „New Key“ betätigt habt.
und jetzt sollte unser Gitter sich nach oben bewegen. Was auffällt: So lange der Mover in Bewegung ist, färbt sich seine BoundingBox „ORANGE“ und wechselt erst wieder zu „ROT“, wenn die Endposition „OBEN“ oder „UNTEN“ erreicht ist.
7. Mover Frame-Korrektur
Pfeiltasten: Linke Pfeiltaste ← zählt nach unten - Rechte Pfeiltaste → zählt nach oben
Zwischen den Pfeiltasten ← 1 → zeigt sich die „1“, da sich jetzt der Mover auf Keyframeposition 1 befindet.
7.5 Wir aktivieren den Move-Modus (Objekte bewegen) entweder mit der Tastaturtaste „M“ oder mit einem Klick auf den Move-Modus Button in der senkrechten Buttonleiste.
Das Movergitter springt auf Position 0 (unten, Gitter geschlossen) und jetzt haben wir wieder das oben schon angesprochene Phänomen, dass das ObjektPagesFenster den Keyframe 1 anzeigt, obwohl sich der Mover auf der Position von Keyframe 0 befindet
(paradox ist, dass nur in dieser Situation - nach Keyframe Programmierung - die linke Pfeiltaste abwärts zählt, wohingegen, wenn wir unter normalen umständen einen Keyframe direkt anwählen wollen, das genau umgekehrt ist.)
7.9 Wir deaktivieren den Move-Modus und klicken im Objektfenster auf „Apply“ und machen eine Testfahrt →
mover_testfahrt → Punkt 6.7
8. Mover Einstellungen
8.1 Betrachten wir doch mal wieder unser Objektfenster bei angewählem Movergatter ….erschreckend!!! Es wimmelt nur so von Einträgen und Einstellmöglichkeiten, von denen wir nicht mal 10% für unseren Mover benötingen - also… keine Bange! ich habe mal alles mit einem Punkt versehen, was für unseren Mover relevant ist:
triggerTarget:NAME_OBJEKT_WAS_GETRIGGERT_WERDEN_SOLL (hier könnten wir als Adresse unseren eigenen Mover selbst eingeben, wenn wir wollten, dass nach dem Öffnungsvorgang das Movergitter wieder automatisch zuläuft)
MOVER(Ordner)
moverBehavior:2STATE_TOGGLE (Diese Einstellung ist für einen Mover richtig, der nichts anderes tun soll, als sich von A → B bewegen und beim nächsten Aufruf wieder von B → A) - Möglich wäre zum Bsp. LOOPING, was aber keinen Sinn ergäbe das Tor im Dauerbetrieb pausenlos auf und zu laufen zu lassen. Andere Einstellungen benötigt man z.B. wenn bestimmte Steuergeräte eingesetzt werden, was aber hier im Mover Grundlagen Wiki zu weit führen würde.
Besonderheiten und Macken: Manchmal (selten) ist der Eintrag einfach nicht da um den Speed einzustellen. Was tun?
*.Zen abspeichern, Spacer verlassen und neustarten. Dann ist der Speedeintrag wieder da! Toll???
9. Mover Ansteuern
Wer noch nie einen Switch, das ist ein oCMob, genauer gesagt ein oCMobSwitch im Spacer gesetzt hat, der sollte sich jetzt zuerst mal folgendes Wiki durchlesen und dessen Inhalt auch verinnerlichen →
oCMobSwitch
wir klicken im Objektfenster des Switches oben rechts auf den Button „Apply“
wir klicken einmal in das Spacerhauptfenster
noch einmal auf unseren Switch
und jetzt sollte sich eine „blaue Linie“ zeigen, die vom Switch zum Mover führt
das ist unsere Kontrollanzeige, ob der Switch mit dem Mover richtig verlinkt ist
wir lassen den Switch angewählt und wenden uns dem ObjektListFenster zu
Dort ist jetzt nicht mehr der Mover eingetragen, sondern der Switch.
ansonsten verfahren wir wie unter 6.6 in diesem Wiki (TESTFAHRT) und der Mover sollte sich nach oben bewegen.
Die orangefarbene Boundingbox die den Mover bei Bewegung umgibt, sehen wir jetzt nicht, da ja der Mover nicht angewählt ist, sondern der Switch.
9.5 TriggerBox: Über einen oCTriggerscript kann man ebenfalls den Mover aufrufen →
oCTriggerScript
Wld_SendTrigger("TESTMOVER");
Wer mehr über Mover erfahren möchte → Mover Level 2
2016/02/17(dlz)