Nicht eingeloggt
Registrieren

Lift mit automatischen T√ľren erstellen

I.

Erstellt von: RAD0N

Was wir hier schaffen wollen, ist es, einen Lift zu bauen. Erstmal nichts neues. Aber, er soll auch automatische T√ľren an zwei Stationen √∂ffnen und schlie√üen, wenn er hochf√§hrt bzw. runterf√§hrt.

Das setzt voraus, dass man den Umgang mit Triggern kennt, ich werde allerdings alles Nötige erklären.

II.

Vom Aufbau her habe ich mich etwas sparsamer gehalten, die Basis sollte aber ersichtlich sein, dass man sie in jedes Level √ľbertragen kann.

woolfxxximage300-1.jpg

So. Das ist jetzt die kleine Map, die als Grundlage dienen wird. Zwei Räume, verbunden durch einen Glasboden und eben einem Korridor samt Lift.



III.

Kommen wir nun zum Mover. Der eigentlichen "Liftplatte".

Ich habe einfach einen Brush zu einem Static Mesh konvertiert, da er in diesem Falle genau passen sollte.

woolfxxximage301.jpg


Wie gewohnt und im Static Mesh Mover-Tutorial beschrieben, teilen wir diesem Mover seine Keys zu.

Erst setzen wir ihn an die Ausgangsstelle, also dort wo er starten soll, dann rechtsklicken wir auf ihn in der 3D-Ansicht, um ihm in dieser Position den Key 0 zuzuweisen.

woolfxxximage302-1.jpg

An gleicher Stelle, ohne ihn zu verr√ľcken, widerholen wir das ganze, nur statt Key 0 festzulegen, legen wir nun Key 1 fest. Erst nachdem wir auf Key 1 geklickt haben, verschieben wir den Mover an die Stelle, wohin er fahren soll. Anschlie√üend nochmal Rechtsklick auf ihn -> Mover -> Key 0, damit h√§tten wir den Standpunkt f√ľr Key 1 best√§togt und er m√ľsste wieder zu Key 0 zur√ľckfahren, was er im Normalfall auch tut.



Wenn wir jetzt ins Spiel gehen, vorher ein Rebuild, dann f√§hrt er auch nach oben, wie wir es wollten. Wunderbar. Wir haben soeben einen Aufzug erstellt. Doch damit nicht genug, er soll ja noch Liftt√ľren ausl√∂sen.




IV.
Womit wir dann auch bei den Liftt√ľren w√§ren.

Wie auf Screenshot 1 zu sehen ist, haben wir oben und unten zwei Liftt√ľren.

Ich habe sie als Brush gemacht und dann zu einem Static Mesh konvertiert, auch damit alles genau passt.

Nun brauchen wir 4 davon. Zwei oben und zwei unten.



Unten, da wo der Lift starten soll, sind die T√ľren im Ausgangszustand ge√∂ffnet. Also positionieren wir sie wieder im Key 0 und Key 1 verfahren so, dass Key 0 offen ist und Key 1 geschlossen ist.

Denn: Werden die Mover nun ausgelöst, fahren sie zusammen.

woolfxxximage303.jpg

Oben machen wir es genauso, nur mit dem Unterschied, dass die T√ľren beide im Ausgangszustand geschlossen sein sollen. Sie werden nur kurz ge√∂ffnet, wenn der Lift nach oben f√§hrt.

Das wird wieder mit Key 0 und Key 1 bewerkstelligt.


woolfxxximage304.jpg





V.

Kommen wir zur Konfiguration der Mover. Zuerst zum Aufzug selbst.



Wir wollen, dass er ausgel√∂st wird. Wird er ausgel√∂st, f√§hrt er nach oben zu Key 1. Beim Hochfahren soll er die unteren T√ľren schlie√üen. Wenn er oben ankommt, soll er die oberen T√ľren √∂ffnen, dort einige Zeit verweilen, die T√ľren oben schlie√üen, nach unten Fahren und sobald er dort ankommt die unteren T√ľren wieder √∂ffnen.
Kompliziert? Nein! Nat√ľrlich nicht!



Jemand der sich mit Triggern auskennt, wird wissen, dass wir daf√ľr 3 Events brauchen. Also soll dreimal etwas geschehen. 1. Aufzug rauf/runter, 2. untere T√ľren 3. obere T√ľren.



In den Eigenschaften des Lifts weist man ihm nun den Tag "lift" zu.



Wenn das Event "lift" ausgel√∂st wird, soll der Lift sich angesprochen f√ľhlen.
Damit der Lift aber auf einen Trigger reagiert und keiner Ber√ľhrung durch Spieler, stellen wir ihn auch so ein. Das geschieht unter object.




Standartm√§√üig steht dort BumpOpenTimed. Das w√ľrde heissen, dass er auf eine Ber√ľhrung von Player, Bot oder Projektil, je nach Einstellung wartet. Wir haben ihn aber nun auf TriggerOpenTimed gestellt, wo er jetzt darauf wartet, dass ein Trigger ihn aktiviert.




Ich empfehle dringends bei allen Movern das MoverEncroachType auf ME_CrushWhenEncroach zu stellen, was heisst, das ein Spieler oder Bot get√∂tet wird, sollte er steckenbleiben. Sollte das nicht geschehen, kommen die Mover aus dem Takt und sind beispielsweise offen, wenn der Lift im andren Stockwerk ist oder so. Das w√§re mitunter das schlimmste was passieren k√∂nnte, in dem Falle w√ľrde nurnoch ein Map Neustart die Mover wieder in den Takt bringen, was ja beispielsweise im Netzspiel eine Katastrophe w√§re.

Mit MoveTime ist die Zeit von Key 0 zu Key 1 gemeint. Ich hab sie mal auf 4 gestellt, standartmäßig ist sie auf 1.

Mit StayopenTime kann man auch noch experimentieren, das definiert die Zeit in Sekunden wie lange der Lift auf Key 1, also oben verweilt.




VI.

Zu den Einstellungen der T√ľren.

Bei allen T√ľren ist es wichtig, dass unter Object folgende Einstellung ge√§ndert wird:

woolfxxximage308.jpg

Das TriggerToggle unter InitialState ist wichtig, es stellt die T√ľr so ein, dass sie jedes mal wenn sie von einem Trigger angesprchen wird, zum n√§chsten Key f√§hrt. Toggle heisst ja auch soviel wie umschalten.
Nun legen wir das Event und den Tag fest, der die unteren beiden T√ľren ausl√∂sen soll.




Die unteren T√ľren bekommen beide meinetwegen den Tag "Doors2". Sollte also ein Event ausgel√∂st werden mit dem Namen "Doors2", so werden die beiden unteren T√ľren ausgel√∂st.
Mit den oberen T√ľren machen wir im Grunde dasselbe, mit der Ausnahme, dass sie den Tag "Doors" bekommen. Wichtig ist nur, dass es ein anderer Tag ist als die unteren T√ľren haben, sonst w√ľrde ein Trigger alle T√ľren unten sowohl als auch oben aktivieren. Und das w√§re schlecht.


woolfxxximage310.jpg

Also das auf "Doors" gesetzt und schon sollte alles funktionieren.




VII.
Aber halt! Noch gibt es ja keine Trigger die irgendeinen der Mover auslösen!



Das √§ndern wir schnell, indem wir einen handels√ľblichen Trigger aus dem Actorbrowser nehmen.



Der wird mit Rechtsklick in der 3D-Ansicht auch auf den Mover gesetzt, etwa wie auf dem Bild:

woolfxxximage312.jpg

So. Das wäre geschafft.



Nun muss der Trigger richtig eingestellt werden, dass er den Aufzug ausl√∂st. Erstmal soll er nur den Lift ausl√∂sen, zu den T√ľren kommen wir danach.

Das wird einfach erreicht, indem wir in die Einstellungen des Triggers gehen und Unter Events->Event Den Tag des Lifts eintragen, also "lift".





Damit der Trigger von seinem Aktionsradius auch den Lift komplett oder zumindest großenteils mit einschließt, kann man unter Collision noch die CollisionHeight, also die Kollisionshöhe und mit CollisionRadius den Radius einstellen. In diesem Bereich kann also der Trigger aktiviert werden.



Unter Trigger empfehle ich noch die Einstellung unter ReTriggerDelay. Dieser definiert die Zeit in Sekunden, die ablaufen muss, damit der Trigger wieder ausgelöst werden kann. Es ist nicht dringend erforderlich, aber es tut ja keinem weh und könnte eventuelle Schwierigkeiten abhalten.



Aus Testgr√ľnden habe ich unter Message noch "lift!" eingegeben. Diese Nachricht wird angezeigt wenn ich den Trigger ausl√∂se. Ist besser das im Spiel nicht zu verwenden, aber aus Testgr√ľnden ist es besser so, damit man sieht, dass der Trigger auch richtig ausgel√∂st wird.




Will man später mit Bots spielen, ist es von Nöten, den TriggerType auf TT_AnyProximity zu stellen, damit Spieler, sowohl als auch Bots ihn auslösen können.

Den Lift kann man dann wie einen normalen Aufzug verwenden, die Bots sollten das mit dem Trigger dann schon checken.




VIII.

Die Poente.



Denn jetzt kommt ein sehr hilfreicher und unerläßlicher Teil der movereinstellung, ohne den das ganze nicht möglich ist.

woolfxxximage316.jpg

Die MoverEvents befähigen unsren Lift, bei verschiedenen Lokalisationen ein Event auszulösen.



Dazu muss man wissen, dass der Lift im Ausgangszustand "geschlossen" ist, sich beim hochfahren "öffnet" und oben am Key 1 "geöffnet" ist. Mit den Voraussetzungen und minimalen englisch-Kenntnissen können wir uns zusammenreimen, wann die einzelnen Events nun wann ausgelöst werden sollen.



Sinneshalber tragen wir beim "√∂ffnen", also beim Starten nach oben den Tag der unteren T√ľren (Doors2) ein. Diese werden also angesprochen, sobald der Lift nach oben startet und schlie√üen sich. Ist er "ge√∂ffnet" (opened) also oben angekommen, werden die T√ľren oben ausgel√∂st, die sich dank eingetragenem Tag auch √∂ffnen.

Der Lift bleibt nun seine StayOpenTime oben stehen, danach beginnt er sich wieder zu schlie√üen. Also runterzufahren. Aus diesem Grunde tragen wir unter ClosingEvent den Tag der T√ľren oben ein, die sich dann schlie√üen.

Das letzte w√§ren die unteren T√ľren, die sich ja dann wieder √∂ffnen sollen. Wenn der Lift unten wieder ist, also im "geschlossenen" Zustand ist, m√ľssen sich die T√ľren unten wieder √∂ffnen. Also den Tag der unteren T√ľren bei ClosedEvent eintragen.



Da wir bei deren Einstellung unter Object->InitialState "TriggerToggle" eingestellt haben, verrichtet die T√ľr eine Bewegung pro Anspruch. Und pro Fahrt wird jedes T√ľrenpaar zweimal angesprochen.

Sollte nichts unvorhergesehenes passieren, bleibt das auch so. Damit das nicht aus dem Ruder läuft, haben wir alle Mover unter EncroachType doch hoffentlich auf "CrushWhenEncroach" gestellt.

Wir h√§tten sie nat√ľrlich genau so gut auch auf "IgnoreWhenEncroach" stellen k√∂nnen. Das w√§re aufs Selbe hinausgelaufen, doch h√§tte es etwas seltsam ausgesehen, wenn sich dann ein Spieler einklemmt. Es ist also besser, ihn zu vernichten und den Mover weiterfahren zu lassen.



Wenn wir das testen, m√ľsste alles zu unserer Zufriedenheit ablaufen.




IX.

Beim testen viel mir dan doch noch etwas auf, was ich vergessen habe.



Was ist denn, wenn ich oben aussteige und der Lift wieder runterfährt?

Es muss doch eine Möglichkeit geben, den Lift von oben hochzuholen.



Und das ist sogar am einfachsten!



Wir nehmen uns diesmal einen UseTrigger aus dem ActorBrowser.



Nicht wundern, er sieht nicht wie ein Trigger aus, da er wohl hinterher gescriptet wurde. Aber das ist ja auch nicht so wichtig.



Wichtiger sind die Einstellungen.

Und es sind nichtmal viele!



Nur unter Events->Event der Tag des Lifts eingetragen ("lift") und schon wird der Lift gerufen, sobald man im Radius dieses Triggers steht und die Use Taste im Spiel dr√ľckt. Alternativ k√∂nnte man auch einen normalen Trigger nehmen, aber es w√§re sicherlich doof, wenn der Lift hochf√§hrt, sobald man nur mal vorbeil√§uft.






Das wäre geschafft!



X.


Die Map habe ich auch noch dabei, ihr könnt sie downloaden und ausprobieren oder mal die Einstellungen studieren falls etwas nicht funktionieren sollte oder einfach mit den Werten rumexperimentieren.



-> Download



In der Map habe ich oben gegen√ľber des Lifts einen normalen Trigger angebracht, damit man √ľberpr√ľfen kann, ob der Lift hochf√§hrt und auch, wie das mit einem normalen Trigger funzt.





Sollten Fragen offen sein, ich bin im Forum als RAD0N registriert, oder unter meiner Email-Adresse Radon[@]unrealed.de erreichbar. (Damit ich nicht von Webbots zugespammt werde, hab ich das "at" in Klammern gesetzt)



Sollte ich einen Fehler √ľbersehen habe, werde ich mich nat√ľrlich umgehend an eine berichtigte Version machen!



------> Radon