Entitées Dynamique

Écrit le 17/01/2004 par Cyr1c
Dernière mise à jour : 30/01/2006

Les Triggers

RMF d'exemple

Les triggers sont des objets invisibles qui permettent de déclencher un évenement (une entité) lorsque le joueur rentre dedans. Créez donc un bloc de façon à ce que le joueur soit obligé de le traverser. Ensuite faites " Tie ToEntity" et sélectionnez la fonction " trigger_once" ou " trigger_multiple". Trigger_once déclanchera l'évenement qu'une seule fois alors que " trigger_multiple" déclenchera l'évenement chaques fois que le joueurs passera dedans.

Dans le champs " target" mettez le nom ("name") de l'entité que vous voulez actionner. Dans " Delay before trigger" choisissez le temps avant que l'action se déclenche. Pour les " trigger_multiple" seulement vous pouvez changer le temps entre chaque réactivation du trigger, c'est à dire le temps au bout duquel le trigger refonctionnera. Pour cela changez la variable " delay before reset".

Les Boutons

Les boutons peuvent servir à déclencher beaucoup d'éffet et je dirais même qu'ils peuvent déclencher n'importe quoi. Chaque bouton possède une valeur "Target" qui définie l'entité qui doit changer. Par exemple, une lumière de nom "lumiere1" peut être éteinte ou allumé par un bouton dont la fonction "Target" est "lumiere1". Mais il peut aussi s'agir de bien d'autres choses comme une porte ou un ascensseur. Il existe deux types de boutons dans Half-Life. Tout d'abord vous devez créer un objet qui sera votre bouton. Sachez que les texture dont le nom commence par "+0" ou "+A" sont spécialement conçues pour les boutons : "+0" pour un boutton désactivé, "+A" pour un boutton désactivé. La texture changera lors de l'activation. Si vous mettez par exemple la texture "+0BUTTON4", lors de l'activation il prendra la texture "+ABUTTON4". Une fois votre objet créé, faites "Tie to Entity" dans "Tools" et choisissez soit "button_target" ou "func_button".

La fontion "button_target": C'est le plus simple. Dans "Targetted object" mettez le nom de l'entité choisie. Dans "Flag", choisissez "Use Activate" afin que le joueur doive appuyez sur 'utiliser' pour enclencher le bouton.

La fontion "func_button": Cette fonction est plus compliquée. D'abord, il s'enclenche dès que vous arrivez devant le bouton, et il s'enfonce (dans "flag" vous pouvez choisir "don't move" pour eviter cela). Dans "Targetted Object" entrez le nom de l'entité à enclencher. Vous pouvez aussi utiliser des sons. Dans "Delay before trigger" vous pouvez mettre un temps avant que l'action se déclenche. Dans "Delay before reset" vous entrez le temps avant que le bouton redevienne normal.

Les Echelles

Une échelle se compose de deux partie. La première partie est l'objet que verra le joueur et qui représente une échelle. Créez donc l'objet et référrez vous au paragraphe "Insérer des textures transparentes" pour créer cet objet. Mais vous pouvez tout aussi bien créer totalement l'échelle en 3D barreau après barreau si ça vous chante! Le deuxième objet sera une entité invisible qui fera monter le joueur quand il rentrera dedans. Donc vous devez créer un objet de la même taille que votre échelle que vous placerez contre celle-ci. Sélectionnnez cet objet et faites Tie to Entity dans Tools. Choisissez ensuite la fonction func_ladder. Et voilà!

Les Téléporteurs

Pour créer un télétransporteur vous avez besoin de deux entités. Une zone de départ et une entité d'arrivé. Pour créer une zone de départ, créez objet en 3D dans d'où le joueur sera téléporté dès qu'il rentrera dedans (cet objet sera invisible). Sélectionnez-le et faites Tie to Entity dans Tools. Choisissez trigger_teleport. Dans le champ Target, entrez un nom du style "telep1". Ensuite créez un entité de fonction info_teleport_destination. Dans Name entrez le nom que vous avez mis pour Target.

Ensuite vous devez insérer les sprites (image animé) qui représenteront le télétransporteur. Vous n'êtes pas obligé d'en placer mais c'est plus joli! Vous devez pour cela insérer une entité env_sprite au milieu du bloc de télétransportation. Dans "proprieties", déterminez une transparence dans FX-Amount à 255 (pour plus d'indication reportez vous au chapitre "Fenêtres: la transparence") et dans FX-Renderer mettez Solid. Dans Scale vous pouvez entrer une valeur pour grandir ou rappetisser le sprite et dans FrameRate vous pouvez changer la vitesse du sprite.
Ensuite dans SpriteName entrez: "sprites/X.spr" où X peut prendre les valeurs: e-tele1(jaune), enter1 (jaune et vert), exit1 (vert et jaune), portal1 (on voit un monde extraterrestre à travers!), tele1 (jaune), b-tele1 (un teleport vert qui se crée), cnt1 (vert), d-tele1 (un téléport jaune qui se crée).

Multi Sources

Une multisource est une entité qui permet d'activer un évenement (une entité), un peu comme un trigger sauf qu'il ne faut pas rentrer dedans, mais il faut actionner plusieurs boutons pour l'enclencher. Prenons un exemple du jeu. Le passage où il faut tuer les tentacules dans le silo. Pour y arriver il faut remettre le générateur en marche ainsi que l'allimentation en oxygène et en fuel pour pouvoir activer la chambre de combustion. Pour arriver à ce résultat les développeurs ont utilisés une "multisource". C'est à dire que cette entité déclenche la combustion à la condition que tous les éléments (énergie, fuel, oxygène) aient été enclenchés. Plus précisément, les boutons permettant d'actionner ces éléments possèdent un champs appellé "Master". Chaque élément (cela peut être des boutons, des triggers) possède une variable "Master" où vous entrez le nom de la "multisource". Une fois que tous ces éléments sont actionnés le multisource déclenchera l'entité dont le nom est inscrit dans le champ "Target Object". J'espère que vous avez compris :-)

Multi Manager

Un multi-manager est une entité qui permet de régler très précisément des évenements, les uns après les autres. On peut l'assimiler à une minuterie qui déclenche les événement à des moments précis. Tout d'abord définissez un trigger qui enclenchera le multi-manager. Insérez ensuite une entité "multi-manager" là où vous voulez. Cela n'a pas d'importance mais par convention, on le placera près des événements à déclencher. Afin de mieux expliquer le fonctionnement du multi-manager, je vais utiliser un exemple.

Disons que vous voulez faire exploser un mur et qu'ensuite l'alarme à incendie se déclenche. Vous aurez donc besoin d'un func_breakable, d'un ambiance_generic et d'un env_explosion. Créez d'abord votre scène en ne mettant qu'un seul trigger pour le multi-manager. Ensuite placez votre multi-manager et donnez lui un nom (le même que le target du trigger). Ensuite il faut éditer les options du multi-manager. Cliquez sur SmartEdit dans Proprieties et puis Add. Chaque fois que vous cliquerez sur Add, le programme vous demandera d'entrer une nouvelle valeur (Key) avec une variable attachée (value). Dans Key, entrez le nom de l'entité que vous voulez déclencher, par exemple murbreak (nom de l'entité func_breakable). Et dans Key entrez le temps au bout duquel se déclenchera l'action, par exemple 10[/color]. Attention l'unité est le centième de seconde. Ici donc, le mur se cassera au bout de 10 centième de seconde. Ensuite, rentrez une nouvelle valeur, celle de la sirène (par exemple "sirene"). Et donnez lui une valeur plus grande que "murbreak". Ainsi la sirène se déclenchera APRES le mur. Mettez par exemple 100. Donc la sirène se déclenchera une seconde après que le multi-manager soit déclenché et 90 centièmes de secondes après l'explosion du mur.
Or nous avons oublié de définir l'env_explosion. ce n'est pas grave car l'ordre dans un multi-manager n'a pas d'importance. Seule la varialble définissant le temps au bout duquel l'événement se déclenche, est important. Entrez donc la valeur "murexplosion" avec 10 (en même temps donc que le mur se casse).
Voilà votre scène est terminée. Donc pour résumer, lorsque le joueur tranversera un trigger, il déclenchera un multi-manager qui déclenchera au bout de 10 secondes l'explosion du mur et 90 après l'explosion, une sirène se mettra en marche.

http://www.game-lab.com/images/tuts/hl1_entities_dyn/manager.jpg