Nous allons maintenant voir comment déclencher des actions. Nous allons, pour cela, un peu voir comment se servir des outputs. Si vous n'aviez pas bien compris ce que c'était, vous allez comprendre .
Entités |
Type |
Description |
---|---|---|
Bloc |
Déclenche un output, une seule fois, au passage du joueur |
Dans ce premier exemple, le joueur passera dans une zone, et la lumière s'allumera. La zone dans laquelle le joueur passera sera ce que l'on appelle, en mapping, un trigger. Trigger veut dire déclencheur en anglais.
Un trigger_once est une zone de déclenchement. Elle a comme particularité de ne pouvoir appeler qu'une seule fois une ou plusieurs entités.
Dans mon exemple, j'ai placé le trigger_once entre les 2 grilles, et le light_spot se trouve au dessus des barils explosifs. Le light_spot a son flag Initialy Dark coché. La lumière sera donc éteinte au démarrage de la map.
La première fois que le joueur passera dans le trigger_once, le spot s'allumera. Si le joueur repasse par après, il ne se passera rien.
Donnez un nom à votre light_spot. Je l'ai appelé super_lampe (la propriété Name). Maintenant, nous allons créer votre premier output .
Allez dans l'onglet Outputs, des paramètres du trigger_once. Cliquez sur Add, et rentrez ces valeurs :
Output named |
Targets entities |
Via this input |
Parameter |
Delay |
---|---|---|---|---|
OnStartTouch |
super_lampe |
TurnOn |
<none> |
0.00 |
Ca veut dire : quand le joueur touchera le trigger_once (OnStartTouch), il appellera l'entité nommée super_lampe en lui disant de s'allumer (TurnOn).
Ah oui, en parlant de flags, les triggers ont ceux-ci :
Clients : si coché, le joueur peut déclencher le trigger. Il est coché par défaut.
NPCs : si coché, tous les NPC peuvent le déclencher. Les NPC sont les monstres, les combines, enfin, tout ce qui « vit ».
Pushables : si coché, un objet peut être poussé dans le trigger pour le déclencher.
Physics Objects : un objet physique peut déclencher le trigger (par exemple, tirer un radiateur avec le Gravity Gun dans le trigger le déclenchera).
Only players ally NPCs : tous les joueurs et les NPC alliés (les gentils comme les vortigaults par exemple) déclencheront le trigger.
Only clients in vehicles : seulement le joueur s'il est dans un véhicule, comme le buggy de Freeman.
Only clients not in vehicles : seulement le joueur s'il n'est pas dans un véhicule.
Everythings : tout peut le déclencher.
Physics debris : les débris physiques peuvent le déclencher. Par exemple, s'il y a une caisse et que vous la cassez, les débris de cette caisse peuvent déclencher le trigger.
Entités |
Type |
Description |
---|---|---|
Bloc |
Déclenche un output au passage du joueur |
Le trigger_multiple s'utilise comme un trigger_once. La seule différence est que le trigger_multiple peut être déclenché plusieurs fois.
Mais attention, dans ce cas, nous n'allons plus utiliser TurnOn pour le Via this input. En effet, si la lumière vient d'être allumée et que le joueur repasse dans le trigger, la lumière ne s'éteindra pas (normal, puisqu'on va demander à super_lampe de s'allumer).
Mais alors, comment faire ?
Il suffit de mettre Toggle à la place de TurnOn. Ca veut dire qui si la lumière était allumée, elle s'éteint, et si elle était éteinte, elle s'allume.
Le trigger_multiple possède une propriété utile : Delay before reset. C'est le temps, en secondes, avant que l'on puisse réutiliser le trigger_multiple. Par exemple, si on met "4", et qu'on traverse le trigger une première fois, il ne se passera rien pendant 4 secondes si on retraverse la zone.
Entités |
Type |
Description |
---|---|---|
Point |
Déclenche un output au chargement de la map |
Vous vous attendiez à voir encore un trigger_machin ? Eh ben non, ici, c'est d'un logic_auto dont on va parler. Mais on ne va pas en parler beaucoup.
Logic_auto est une entité qui se déclenche au chargement de la map. Grâce à celle-ci, nous allons pouvoir appeler, toujours via des outputs, des entités lors du chargement de la map.
Je n'ai pas d?exemple à vous montrer (il n'y en a aucun qui me vient à l'esprit en fait) sur l'utilisation de ceci. Ah si, je peux vous dire que ça sert à initialiser certaines entités comme les monstres (les NPC), qui par défaut ne sont pas actifs dans une map.
Entités |
Type |
Description |
---|---|---|
Point |
Compte le nombre de fois que quelque chose est exécuté |
Est-ce possible de déclencher quelque chose après par exemple 2 passages dans une zone ?
Ben, oui, c'est possible. Pour cela, nous allons utiliser un trigger_multiple et un math_counter. Cette dernière entité permettra de compter le nombre de passages.
Commencez par faire votre trigger_multiple. Ensuite, créez un math_counter et réglez-lui ses propriétés comme ceci :
Citation : math_counter
Name : compteur
Initial Value : 0
Minimim Legal Value : 0
Maximum Legal Value : 2
Je pense que les 4 propriétés se passent de commentaire. Comme vous le voyez, le math_counter peut déclencher à 2 moments : quand une valeur minimale est atteinte, et quand une valeur maximale est atteinte. Dans mon cas, je n'ai besoin que d'une des deux, j'ai choisi de passer par la valeur maximale.
Maintenant, un petit output :
Output named |
Targets entities |
Via this input |
Parameter |
Delay |
---|---|---|---|---|
OnHitMax |
super_lampe |
Toggle |
<none> |
0.00 |
Voilà. Donc, quand le math_counter arrivera à sa valeur maximale (OnHitMax), il appellera super_lampe en lui disant de s'allumer (Toggle). Si vous aviez choisi de passer par la valeur minimale, vous auriez utilisé OnHitMin comme output.
Comme output de votre trigger_multipe, mettez :
Output named |
Targets entities |
Via this input |
Parameter |
Delay |
---|---|---|---|---|
OnTrigger |
compteur |
Add |
1 |
0.00 |
Donc, quand on touche le trigger (OnTrigger (j'aurais pu mettre OnStartTouch, mais si je mets OnTrigger, il faut que le joueur soit bien dedans pour déclencher, c'est mieux)), il appellera compteur en lui disant d'ajouter (Add) 1 à sa valeur.
Mais après, le compteur est inutilisable ? Si je repasse encore 2 fois dans le trigger_multiple, ça ne fera plus rien ?
Effectivement. En fait, il faut remettre la valeur initiale du compteur à 0, après 5 passages. Pour cela, le math_counter va s'auto-appeler (on va lui faire un output à lui-même).
Prenez votre math_counter, et créez cet output :
Output named |
Targets entities |
Via this input |
Parameter |
Delay |
---|---|---|---|---|
OnHitMax |
compteur |
SetValue |
0 |
0.00 |
Ce qui veut dire : "Quand il arrivera à sa valeur maximale, il appellera compteur (c'est à dire lui-même) en lui disant de redéfinir sa valeur initiale (SetValue) en la mettant à zéro (With a parameter override of)".
Voilà, je pense qu'avec ce premier mini-tuto portant sur les déclencheurs et les outputs vous avez compris ce que c’est. Vous avez aussi compris ce que sont les inputs. Ce sont donc les méthodes qui permettent d'agir sur l'entité cible (allumer la lampe, compter…).