Ereignisse
Ein Ereignis ist ein Satz: wenn das passiert, tu diese Dinge.
WENN jemand die Tür antippt
DANN das Knarren abspielen
sie in 600 ms aufschwingen lassen
das Schild „verschlossen" deaktivieren
Das wenn ist ein Auslöser. Das dann ist eine Liste von Schritten. Das ist die ganze Idee — und sie deckt einen überraschend großen Teil dessen ab, was ein Projekt braucht.
Ein Objekt kann beliebig viele Ereignisse tragen, und jedes läuft für sich.
Jeder Auslöser, und wofür er da ist
Die generierte Auslöser-Referenz nennt die Parameter jedes einzelnen. Hier steht, was sie bedeuten und wo sie überraschen.
Eingaben
| Im Editor | Feuert, wenn |
|---|---|
| Mouse button | ein Tippen oder Klick — Zweige für Klick, Drücken und Loslassen |
| Hover | der Cursor das Objekt betritt oder verlässt |
| Double click | zwei Klicks auf dasselbe Objekt binnen 300 ms |
| Long press | 450 ms gehalten, ohne zu bewegen |
| Key | eine Taste — Zweige für Drücken und Loslassen |
| Scroll | das Rad sich dreht; nach Richtung filterbar |
| Drag | platzierter AR-Inhalt gezogen wird |
| Pinch | platzierter AR-Inhalt zum Skalieren gezwickt wird |
| Rotate | platzierter AR-Inhalt gedreht wird |
Die drei Gesten-Auslöser gibt es nur auf Surface-Szenen — sie betreffen Inhalt, den der Besucher platziert hat. Sie wiederholen sich fortlaufend, solange der Finger sich bewegt; behandeln Sie sie als Strom, nicht als einzelnen Moment.
Lebenszyklus
| Im Editor | Feuert, wenn |
|---|---|
| Launch | die Szene startet — erreicht jedes Objekt |
| Resize | Fenster oder Viewport die Größe ändert |
| Pause | App oder Tab in den Hintergrund geht |
| Resume | sie zurückkommt |
on-pause ist der Ort, an dem man Dinge höflich stopptTöne spielen weiter, wenn ein Besucher die App wechselt, sofern Sie sie nicht stoppen. Audio und
Timer auf on-pause zu pausieren und auf on-resume wiederherzustellen ist eine Kleinigkeit, die
Leute bemerken.
Tracking
| Im Editor | Feuert, wenn |
|---|---|
| Detect | Marker oder Fläche gefunden wird |
| Tracking lost | das Tracking verloren geht |
| Placed | der Besucher den Inhalt platziert hat |
| VPS ready | die Verortung gestartet ist |
| VPS localized | die echte Position des Besuchers gefunden wurde |
| VPS localization failed | sie es nicht wurde — das ist normal, kein Fehler |
| VPS error | die Verortung gar nicht laufen konnte |
Jeder wird nur auf Szenen angeboten, deren Anker ihn erzeugen kann. Erkennung wird an der Flanke gemeldet, wenn das Tracking beginnt, nicht in jedem Bild.
on-vps-not-localized feuert routinemäßig, während der Besucher nach einer Stelle sucht, die die
Karte erkennt. Behandeln Sie es als „weiter versuchen", nicht als anzukündigenden Fehlschlag.
Zeit und Nähe
| Im Editor | Feuert, wenn |
|---|---|
| Delay | einmal, nach einer Verzögerung |
| Every N seconds | wiederholt — eine Wiederholungszahl von 0 heißt endlos |
| Distance | etwas in einen Abstand kommt oder ihn verlässt — zwei Zweige |
| Visibility | das Objekt gezeigt oder verborgen wird |
| Variable change | sich der Wert einer Variablen ändert |
on-distance hat eine Option „beim Start prüfen". Ohne sie feuert ein Objekt, das beim Öffnen der
Szene bereits nah ist, erst, wenn sich etwas bewegt.
State, Physik und Oberfläche
| Im Editor | Feuert, wenn |
|---|---|
| State active | dieses Objekt den gewählten State betritt |
| State inactive | es ihn verlässt |
| Collision | dieses Objekt ein anderes berührt — optional nur bestimmte |
| UI action | ein Button auf einer Interface-Karte gedrückt wurde |
| Signal | ein anderes Ereignis ein Signal gesendet hat |
| Game controls | die Figur den Zustand gewechselt hat |
Ein Ereignis, beide Richtungen
Manche Auslöser haben Zweige, ein einzelnes Ereignis behandelt also jeden Ausgang. Legen Sie einen Abstand einmal fest und antworten Sie sowohl auf Annäherung als auch auf Entfernen:
| Auslöser | Zweige |
|---|---|
| Distance | betreten · verlassen |
| Key | gedrückt · losgelassen |
| Hover | betreten · verlassen |
| Mouse | Klick · gedrückt · losgelassen |
| Visibility | gezeigt · verborgen |
| Game control | Ruhe · Bewegung · Sprung · Laufen |
Im Editor bekommen Sie je Zweig einen Abschnitt. Auslöser ohne Zweige haben einen einzigen, „bei Aktivierung".
Auf welche Objekte ein Schritt wirkt
Jeder Schritt hat Ziele.
Bleiben sie leer, wirkt der Schritt auf das Objekt, das das Ereignis trägt — der Normalfall. Füllen Sie sie aus, wirkt er stattdessen auf jene Objekte; so öffnet ein Ereignis auf einem Button drei Türen.
Tipper wandern zu den Eltern hinauf
Ein Tippen, ein Hovern oder eine Kartenaktion erreicht das Objekt und seine Elternobjekte.
Das spart viel Wiederholung: Ein Ereignis auf einer Gruppe fängt Tipper auf alles darin ab, statt dass Sie dasselbe Ereignis auf vierzig Objekte kopieren.
Zwei angenehme Nebenwirkungen:
- „irgendwo in diesem Panel tippen" ist ein Ereignis auf dem Panel;
- zwischen zwei Kindern desselben Elternobjekts zu gleiten löst kein Hover/Blur am Elternobjekt aus, weil Sie es nie wirklich verlassen haben.
Kollisionen sind die Ausnahme — sie feuern nur dort, wo sie passiert sind. Und Tastatur, Scrollen, Größenänderung und Szenenstart betreffen kein einzelnes Objekt, sie erreichen also alles.
Mehrere Tasten für ein Ereignis
Springen mit Leertaste oder W ist ein Ereignis, nicht zwei Kopien. Die erste Kombination lebt im Auslöser; der Rest kommt in eine „oder"-Liste, als Text geschrieben:
ArrowUp ctrl+KeyW KeyA+KeyS Space+double
Modifikatoren gehören zu der Kombination, in der sie stehen, und eine Alternative ersetzt die
Belegung, statt sie zu ergänzen. Maustasten nutzen dasselbe Format (mouse:middle).
Noch besser: Nennen Sie eine Projektbelegung statt einer Taste. Legen Sie „Sprung" einmal in den Projekteinstellungen neu, und jedes Ereignis, das sie erwähnt, zieht mit — genau das, was Sie an dem Tag wollen, an dem jemand nach Linkshänder-Steuerung fragt.
Jeder Schritt, und was er tut
Die Parameter stehen in der generierten Schritt-Referenz.
Navigation und Außenwelt
| Im Editor | Tut |
|---|---|
| Scene transition | zu einer anderen Szene gehen |
| Space transition | zu einem anderen Space gehen, optional zu einer bestimmten Szene |
| Open URL | einen Link öffnen, in diesem Tab oder einem neuen |
| Open messenger | Facebook, VK, OK, Instagram, Telegram, WhatsApp oder Viber |
| Call phone number | einen Anruf starten |
| Compose email | eine E-Mail beginnen |
| File download | eine Datei aus Ihrem Projekt herunterladen |
| Contact download | eine Kontaktkarte anbieten, aus den ausgefüllten Feldern gebaut |
Der Messenger-Schritt nimmt eine Seiten-Id für Facebook, VK und OK, einen Benutzernamen für Instagram und Telegram und eine Telefonnummer für WhatsApp und Viber.
Die Szene ändern
| Im Editor | Tut |
|---|---|
| Show / hide object | die Ziele zeigen oder verbergen — auf einer Szene aktiviert das sie |
| Set state | in einen benannten State wechseln, optional weich über eine Dauer |
| Override properties | einen einmaligen Satz Werte als temporären State anwenden |
Animation
| Im Editor | Tut |
|---|---|
| Play animation | ein Timeline-Preset abspielen — Schleife, Wiederholungen, Tempo, Verzögerung |
| Stop animation | eines stoppen |
| Transformation | über die Zeit bewegen, drehen oder skalieren |
| Opacity | ein- oder ausblenden |
| Material | die Materialien der Ziele zu einem gespeicherten hin mischen |
| Bone transform | einen einzelnen Knochen bewegen |
| Built-in animation | einen Clip abspielen, der mit einem Modell kam |
Play animation kann eine Animation irgendeines Objekts starten, nicht nur die des Objekts mit dem Ereignis — so startet ein Button eine Sequenz, an der mehrere Dinge zugleich beteiligt sind.
Bewegung
| Im Editor | Tut |
|---|---|
| Follow object | fortlaufend folgen — Abstand, Versatz, Glättung und Tempo |
| Look at object | sich zu etwas drehen, ohne sich zu bewegen |
| Stop following | beides beenden |
| Fly along path | einen Pfad entlangfahren |
| Stop path flight | das beenden |
Logik
| Im Editor | Tut |
|---|---|
| If — otherwise | eine Bedingung prüfen und eine von zwei verschachtelten Schrittlisten ausführen |
| Set variable | eine Variable setzen, erhöhen oder umschalten |
| Send signal | ein Signal senden — an die Ziele oder an alle |
| Wait, then | warten, bevor die darin verschachtelten Schritte laufen |
Zeiger
Lock pointer und Release pointer verbergen den Mauszeiger und geben seine Bewegung an Ihre Szene weiter — was ein Ego-Spiel braucht, damit der Zeiger nicht aus dem Fenster wandert.
Bedingungen
if_action ist ein Schritt, keine Eigenschaft des Ereignisses — Bedingungen verschachteln sich
also, und „wenn im wenn" ist der Weg zu mehr als zwei Ausgängen.
Worauf die Bedingung schaut, legt ihre Quelle fest:
| Quelle | Prüft | Mit |
|---|---|---|
always | nichts — immer wahr | — |
variable | den Wert einer Variablen | Variable, Operator, Wert |
distance | wie weit das Objekt des Ereignisses von einem anderen entfernt ist | Ziel, Operator, Schwelle |
state | in welchem State ein anderes Objekt ist | Ziel, State |
visible | ob etwas sichtbar ist | Ziel, Flag |
random | Zufall | Schwelle, in Prozent |
Werte werden locker gelesen: 3 wird eine Zahl, true ein Boolean, alles andere bleibt Text. ==
und != vergleichen exakt; die übrigen Operatoren vergleichen als Zahlen.
Variablen, Signale und Timer
Variablen halten für den Besuch, nicht für das Projekt — sie starten jedes Mal leer, wenn jemand Ihr Erlebnis öffnet. Geben Sie ihnen ihre Startwerte aus einem Ereignis beim Szenenstart. Es sind dieselben Variablen, die ein Skript als Globals sieht.
Signale (emit_signal → on-signal) verketten Ereignisse, ohne Schritte zu kopieren: Mehrere
Ereignisse hören auf level-complete, und alles kann es senden. Ein Signal, das sich selbst erneut
sendet, hört nach acht Runden auf, statt das Bild einzufrieren.
Timer starten, wenn ihr Objekt lebendig wird, und setzen sich zurück, wenn es deaktiviert wird. Erneutes Aktivieren startet die Zählung neu, statt eine Salve verpasster Ticks abzufeuern.
States
Ein State ist eine benannte Momentaufnahme der Einstellungen eines Objekts: Position, Farbe, Sichtbarkeit, was Sie wollen. Auf einen State zu wechseln wendet die Momentaufnahme an, und mit einer Dauer zu wechseln lässt es weich laufen.
States sind der saubere Weg zu einem Schalter, einem Hervorheben, einer Tür, die offen oder zu ist — ganz ohne etwas von Hand zu animieren.
Ändern Sie ein Objekt, während einer seiner States aktiv ist, bearbeiten Sie die Momentaufnahme dieses States, nicht das Objekt. Genau das wollen Sie beim Bauen von States — und es ist gründlich verwirrend, wenn Sie nicht bemerkt haben, dass ein State ausgewählt war.
Re-Tracking
Bei AR-Szenen entscheidet der Re-Tracking-Modus jedes Ereignisses, was passiert, wenn der Marker verloren und wiedergefunden wird: sofort von vorn beginnen, nie neu starten, oder neu starten, sobald die laufenden Schritte fertig sind.
Wenn Sie auch Skripte schreiben
Ereignisse, Patches und Skripte teilen ein Vokabular — dasselbe Tippen erreicht alle drei.
Derselbe Auslöser am selben Objekt, sowohl als Ereignis als auch als Skript verdrahtet, läuft zweimal. Wenn etwas doppelt feuert, liegt es fast immer daran.
Weiter: Animation — Dinge in Bewegung bringen.