(von Fizzban)
Daedulus kennt leider nur einen Befehl, um Items während des Spiels in die Welt einzufügen. Die meisten anderen Vobs müssen dagegen im Spacer eingefügt werden und bleiben das gesamte Spiel lang an Ort und Stelle. Mit diesem Trick kann man beliebige Vobs mittels Scripte jederzeit in die Welt einfügen oder aus dieser entfernen.
1) Erstelle im Spacer ein zCMover-Objekt mit folgenden Werten:
vobname: Beliebiger eindeutiger Name visual: Beliebige 3DS-Datei, z.B. //INVISIBLE_KEYFRAME.3DS// (der Mover wird im späteren Spiel nicht zu sehen sein, visual ist nur für Punkt 2 wichtig) reactToOnTrigger: //TRUE// reactToOnTouch: //FALSE// reactToOnDamage: //FALSE// respondToObject: //TRUE// moverBehaviour: Entweder //2STATE_TRIGGER_CTRL// oder //2STATE_TOGGLE// (siehe unten für Details) moveSpeed: //100// speedType: //const//
2) Füge den VOB, den du später entfernen oder hinzufügen möchtest als Child vom Mover ein (Rechtsklick auf den Mover, dann Insert […] as child of '…'). Es entsteht ein Vobtree mit dem Mover als Wurzel. Sollen mehrere VOBs prinzipiell immer gleichzeitig verschwinden oder erscheinen, können diese alle als Children von einem Mover erzeugt werden. Sollen sie dagegen unabhängig voneinander sein, braucht es für jeden VOB einen eigenen Mover.
3) Positioniere sämtliche VOBs in der Welt.
4) Setze showVisual des Movers auf FALSE. Durch die Auswahl des Movers erscheint im Fenster Objectpages automatisch die Kontrolle für Mover.
5) Drücke „new key“, um den nullten Keyframe zu erzeugen.
6) Verschiebe den Mover eine gutes Stück nach unten. Da er die Wurzel eines Vobtrees ist, bewegen sich alle anderen Knoten im Baum, also die in Punkt 2 eingefügten VOBs ebenfalls nach unten. Auf diese Weise können sie aus dem Blickfeld des Charakters entfernt werden. Sie sind zwar weiterhin in der Welt, aber da der Spieler sie weder sehen noch mit ihnen interagieren kann, sind sie für ihn aus der Welt verschwunden.
7) Drücke erneut „new key“, um den ersten Keyframe zu erstellen.
Ist der Mover im Modus 2STATE_TOGGLE können nun in den Skripten die VOBs aus Punkt 2 mittels
Wld_SendTrigger("<Name des Movers>");
entfernt bzw. hinzufügt werden. Befindet er sich dagegen im Modus 2STATE_TRIGGER_CTRL, so entfernt der obige Befehle die VOBs, während
Wld_SendUnTrigger("<Name des Movers>");
sie wieder einfügt.
Mögliche Anwendungen: