Aller au contenu principal

Événements

Un événement est une phrase : quand ceci arrive, fais ces choses.

QUAND  quelqu'un touche la porte
ALORS jouer le grincement
l'ouvrir en 600 ms
désactiver le panneau « verrouillé »

Le quand est un déclencheur. Le alors est une liste d'étapes. C'est toute l'idée — et elle couvre une part surprenante de ce dont un projet a besoin.

Un objet peut porter autant d'événements que vous voulez, et chacun s'exécute indépendamment.

Ce sont les noms que vous voyez dans l'éditeur

Si vous écrivez aussi des scripts ou construisez des patches, chacun a également un nom de code court — les références des déclencheurs et des étapes les listent côte à côte. En construisant dans l'éditeur, vous n'en avez jamais besoin.

Deux listes générées à garder ouvertes

Tous les déclencheurs auxquels réagir : déclencheurs. Toutes les actions possibles : étapes. Les deux viennent directement du moteur : elles ne sont jamais périmées.

Chaque déclencheur, et à quoi il sert

La référence des déclencheurs générée donne les paramètres de chacun. Voici ce qu'ils signifient, et là où ils surprennent.

Entrées

Dans l'éditeurSe déclenche quand
Mouse buttonun toucher ou un clic — branches clic, appui et relâchement
Hoverle curseur entre sur l'objet ou en sort
Double clickdeux clics sur le même objet en moins de 300 ms
Long pressmaintenu 450 ms sans bouger
Keyune touche — branches appui et relâchement
Scrollla molette tourne ; filtrable par direction
Dragdu contenu AR posé est déplacé
Pinchdu contenu AR posé est pincé pour être redimensionné
Rotatedu contenu AR posé est tourné

Les trois déclencheurs gestuels n'existent que sur les scènes surface — ils concernent le contenu que le visiteur a posé. Ils se répètent en continu pendant que le doigt bouge : traitez-les comme un flux, pas comme un instant unique.

Cycle de vie

Dans l'éditeurSe déclenche quand
Launchla scène démarre — atteint chaque objet
Resizela fenêtre ou le viewport change de taille
Pausel'application ou l'onglet passe en arrière-plan
Resumeil revient
on-pause est l'endroit où l'on arrête les choses poliment

Les sons continuent de jouer quand un visiteur change d'application, sauf si vous les arrêtez. Mettre en pause l'audio et les minuteries sur on-pause et les restaurer sur on-resume est une petite attention que les gens remarquent.

Suivi

Dans l'éditeurSe déclenche quand
Detectle marqueur ou la surface est trouvé
Tracking lostle suivi est perdu
Placedle visiteur a posé le contenu
VPS readyle positionnement a démarré
VPS localizedla position réelle du visiteur a été trouvée
VPS localization failedelle ne l'a pas été — c'est normal, pas une erreur
VPS errorle positionnement n'a pas pu fonctionner du tout

Chacun n'est proposé que sur les scènes dont l'ancre peut le produire. La détection est signalée sur le front, quand le suivi démarre, pas à chaque image.

Une localisation VPS ratée est attendue

on-vps-not-localized se déclenche couramment pendant que le visiteur cherche un endroit que la carte reconnaît. Traitez-le comme « continue d'essayer », pas comme un échec à annoncer.

Temps et proximité

Dans l'éditeurSe déclenche quand
Delayune fois, après un délai
Every N secondsde façon répétée — un nombre de répétitions de 0 veut dire indéfiniment
Distancequelque chose entre dans un rayon, ou en sort — deux branches
Visibilityl'objet est affiché ou masqué
Variable changela valeur d'une variable change

on-distance a une option « vérifier au départ ». Sans elle, un objet déjà proche à l'ouverture de la scène ne se déclenchera pas tant que rien ne bouge.

État, physique et interface

Dans l'éditeurSe déclenche quand
State activecet objet entre dans le state que vous avez choisi
State inactiveil en sort
Collisioncet objet en touche un autre — éventuellement seulement certains
UI actionun bouton d'une carte d'interface a été pressé
Signalun autre événement a émis un signal
Game controlsle personnage a changé d'état

Un événement, les deux sens

Certains déclencheurs ont des branches : un seul événement traite donc tous les cas. Réglez une distance une fois, et répondez à l'approche comme au départ :

DéclencheurBranches
Distanceentré · sorti
Keypressée · relâchée
Hoverentré · sorti
Mouseclic · pressé · relâché
Visibilityaffiché · masqué
Game controlrepos · déplacement · saut · course

Vous avez une section par branche dans l'éditeur. Les déclencheurs sans branches ont une seule section, « à l'activation ».

Sur quels objets agit une étape

Chaque étape a des cibles.

Laissez-les vides et l'étape agit sur l'objet qui porte l'événement — le cas habituel. Remplissez-les et elle agit sur ces objets-là, ce qui permet à un seul événement sur un bouton d'ouvrir trois portes.

Les touchers remontent aux parents

Un toucher, un survol ou une action de carte atteint l'objet et ses parents.

Cela évite beaucoup de répétition : posez un événement sur un groupe et il attrape les touchers sur tout ce qu'il contient, au lieu de copier le même événement sur quarante objets.

Deux effets de bord agréables :

  • « toucher n'importe où dans ce panneau » est un seul événement sur le panneau ;
  • glisser entre deux enfants d'un même parent ne déclenche pas hover/blur sur le parent, parce que vous ne l'avez jamais réellement quitté.

Les collisions font exception — elles ne se déclenchent que là où elles se sont produites. Et le clavier, le défilement, le redimensionnement et le démarrage de scène ne concernent aucun objet en particulier : ils atteignent donc tout.

Plusieurs touches pour un événement

Sauter avec Espace ou W est un seul événement, pas deux copies. La première combinaison vit dans le déclencheur ; les autres vont dans une liste « ou », écrite sous forme de texte :

ArrowUp        ctrl+KeyW        KeyA+KeyS        Space+double

Les modificateurs appartiennent à la combinaison dans laquelle ils sont écrits, et une alternative remplace la liaison au lieu de s'y ajouter. Les boutons de souris utilisent le même format (mouse:middle).

Mieux encore : nommez une liaison de projet plutôt qu'une touche. Redéfinissez « saut » une fois dans les réglages du projet et tous les événements qui la mentionnent suivent — ce que vous voudrez le jour où quelqu'un demandera des contrôles pour gaucher.

Chaque étape, et ce qu'elle fait

Les paramètres sont dans la référence des étapes générée.

Dans l'éditeurFait
Scene transitionaller à une autre scène
Space transitionaller à un autre space, éventuellement à une scène précise
Open URLouvrir un lien, dans cet onglet ou un nouveau
Open messengerFacebook, VK, OK, Instagram, Telegram, WhatsApp ou Viber
Call phone numberlancer un appel
Compose emaillancer un e-mail
File downloadtélécharger un fichier de votre projet
Contact downloadproposer une fiche de contact, construite à partir de vos champs

L'étape messagerie prend un identifiant de page pour Facebook, VK et OK, un nom d'utilisateur pour Instagram et Telegram, et un numéro de téléphone pour WhatsApp et Viber.

Modifier la scène

Dans l'éditeurFait
Show / hide objectafficher ou masquer les cibles — sur une scène, cela l'active
Set statebasculer dans un state nommé, éventuellement en douceur
Override propertiesappliquer un jeu de valeurs ponctuel comme state temporaire

Animation

Dans l'éditeurFait
Play animationjouer un preset de timeline — boucle, répétitions, vitesse, délai
Stop animationen arrêter un
Transformationdéplacer, tourner ou redimensionner dans le temps
Opacityfondre
Materialmélanger les matériaux des cibles vers un matériau enregistré
Bone transformdéplacer un os précis
Built-in animationjouer un clip livré avec un modèle

Play animation peut démarrer une animation appartenant à n'importe quel objet, pas seulement à celui qui porte l'événement — c'est ainsi qu'un bouton lance une séquence impliquant plusieurs choses à la fois.

Mouvement

Dans l'éditeurFait
Follow objectsuivre en continu — distance, décalage, lissage et vitesse
Look at objectse tourner vers quelque chose sans bouger
Stop followingarrêter les deux
Fly along pathparcourir un chemin
Stop path flightarrêter cela

Logique

Dans l'éditeurFait
If — otherwisevérifier une condition, puis exécuter l'une de deux listes d'étapes imbriquées
Set variabledéfinir, incrémenter ou basculer une variable
Send signalémettre un signal — vers les cibles, ou vers tout le monde
Wait, thenattendre avant d'exécuter les étapes imbriquées

Pointeur

Lock pointer et Release pointer masquent le curseur et transmettent son mouvement à votre scène — ce dont un jeu à la première personne a besoin pour que le pointeur ne s'échappe pas de la fenêtre.

Conditions

if_action est une étape, pas une propriété de l'événement — les conditions s'imbriquent donc, et « un si dans un si » est la façon d'obtenir plus de deux issues.

Ce que la condition examine est fixé par sa source :

SourceVérifieAvec
alwaysrien — toujours vrai
variablela valeur d'une variablevariable, opérateur, valeur
distancela distance entre l'objet de l'événement et un autrecible, opérateur, seuil
statedans quel state se trouve un autre objetcible, state
visiblesi quelque chose est visiblecible, drapeau
randomle hasardseuil, en pourcentage

Les valeurs sont lues avec souplesse : 3 devient un nombre, true un booléen, le reste reste du texte. == et != comparent exactement ; les autres opérateurs comparent comme des nombres.

Variables, signaux et minuteries

Les variables durent le temps de la visite, pas du projet — elles repartent vides à chaque fois que quelqu'un ouvre votre expérience. Donnez-leur leurs valeurs de départ depuis un événement au lancement de la scène. Ce sont les mêmes variables qu'un script voit comme des globals.

Les signaux (emit_signalon-signal) enchaînent des événements sans copier d'étapes : plusieurs événements écoutent level-complete, et n'importe quoi peut l'émettre. Un signal qui se réémet lui-même s'arrête après huit tours plutôt que de figer l'image.

Les minuteries démarrent quand leur objet devient vivant et se réinitialisent quand il est désactivé. Le réactiver relance le compte au lieu de tirer une rafale de ticks manqués.

States

Un state est un instantané nommé des réglages d'un objet : position, couleur, visibilité, ce que vous voulez. Basculer sur un state applique l'instantané, et basculer avec une durée fait la transition en douceur.

Les states sont la façon propre de construire un interrupteur, une surbrillance, une porte ouverte ou fermée — sans rien animer à la main.

Tant qu'un state est sélectionné, vos modifications y vont

Modifier un objet pendant qu'un de ses states est actif revient à éditer l'instantané de ce state, pas l'objet. C'est exactement ce que vous voulez en construisant des states, et parfaitement déroutant quand vous n'aviez pas vu qu'un state était sélectionné.

Re-tracking

Pour les scènes AR, le mode de re-tracking de chaque événement décide de ce qui se passe quand le marqueur est perdu puis retrouvé : tout reprendre immédiatement, ne jamais redémarrer, ou redémarrer une fois les étapes en cours terminées.

Si vous écrivez aussi des scripts

Événements, patches et scripts partagent un même vocabulaire — le même toucher atteint les trois.

Traitez chaque déclencheur à un seul endroit

Le même déclencheur sur le même objet, câblé à la fois comme événement et comme script, s'exécute deux fois. Si quelque chose se déclenche en double, c'est presque toujours pour cela.


Suite : Animation — faire bouger les choses.