Entités |
Type |
Description |
---|---|---|
Bloc |
Permet de créer une porte translative |
|
Dans un premier temps, nous allons voir comment créer une porte translative.
Translaquoi ?
C'est une porte qui coulisse . La porte coulissante est la plus simple à réaliser. Bon, commençons la création !
Créez le bloc qui fera office de porte et transformez-le en func_door. C'est tout. Il ne reste plus qu'à paramétrer l'entité.
Speed : c'est la vitesse de déplacement de la porte. Une valeur de 100 est tout à fait correcte.
Start Sound : son qui sera joué à l'ouverture de la porte.
Stop Sound : son qui sera joué à la fermeture de la porte.
Delay Before Reset : temps avant que la porte ne revienne à sa position initiale. Si vous mettez -1, la porte ne reviendra pas, elle restera ouverte.
Lip : c'est le nombre d'unités dont la porte dépassera une fois ouverte. Par défaut, le déplacement de la porte est égal à sa largeur (ou profondeur/hauteur suivant l'orientation). Si la porte fait 100 unités de largeur, elle se déplacera de 100 unités. Maintenant, si vous mettez un lip de 10, elle se déplacera de 90 unités.
Health : c'est la vie de la porte. Laissez 0 si vous ne voulez pas qu?on ouvre la porte en tirant dessus. Si vous le souhaitez, spécifiez la vie de la porte.
Locked Sound : son joué si la porte est verrouillée et que le jouer tente de l'ouvrir.
Loop Moving Sound : Mettez Yes si vous voulez que le Start Sound soir joué en boucle jusqu'à ce que la porte ait fini de s'ouvrir.
Move Direction : très important, c'est la direction d'ouverture de la porte. Vous devez vous référer à la vue du dessus (Top) pour orienter le radar. Vous pouvez aussi choisir Up ou Down si vous voulez que la porte monte ou descende.
Voilà pour les principales propriétés. Voici maintenant les flags.
Starts open : la porte sera ouverte par défaut
Non-solid to Player : la porte ne sera pas solide pour le joueur (sans intérêt)
Passable : on peut passer au travers (sans intérêt)
Toggle : assez pratique. La porte reste chaque fois dans sa dernière position jusqu'à ce qu'on l'actionne
Use Opens : il faut appuyer sur Utiliser pour ouvrir la porte
NPCs Can't : le NPC (joueurs et monstres contrôlés par l'ordinateur) ne peuvent pas se servir de la porte
Touch Opens : toucher la porte pour l'ouvrir
Starts locked : la porte sera verrouillée par défaut
Door Silent : la porte ne fera pas de bruit
Entités |
Type |
Description |
---|---|---|
Bloc |
Permet créer une porte rotative |
|
Voyons maintenant comment créer une porte traditionnelle, avec des blocs. Nous verrons par après comment faire une porte avec un model (cette porte là aura une clenche).
La porte rotative fonctionne exactement comme la porte translative. Il va juste falloir spécifier l?axe de rotation et l?angle d?ouverture.
Allez, convertissez votre bloc de porte en func_door_rotating. Ensuite, activez l?option Toggle Helpers (
). Vous devriez voir apparaître une grosse boule mauve au centre de votre porte :
Cette boule est le centre de l?axe de rotation vertical de la porte.
Dans la vue 2D du dessus, déplacez la boule (elle est au centre du bloc et votre curseur se transforme en croix) et mettez-là sur un coté de la porte :
Ainsi, votre porte s?ouvrira comme une porte normale (si vous aviez laissé le boule au centre, la porte aurait tourné sur elle-même).
Toutes les propriétés sont les mêmes que pour une func_door sauf la propriété Move Direction qui est remplacée par la propriété Distance. C?est tout simplement l?angle d?ouverture de la porte, en degrés. 90 est une valeur appréciable, puisque c?est l?angle droit.
Voici juste quelques flags en plus :
Reverse Dir : la porte s'ouvrira en sens inverse
One-way : on ne peut ouvrir la porte que dans un sens
X axis : par défaut, la porte s'ouvre selon l'axe des Z (vue Top). Mais vous pouvez la faire tourner selon l'axe des X si ça vous chante (c'est très rare quand même)
Y axis : idem, mais pour l'axe des Y
Entités |
Type |
Description |
---|---|---|
Point |
Permet de créer une porte rotative en utilisant un model |
|
Une porte avec des clenches ça vous dit ?
Dans ce cas, nous allons utiliser un model de porte ! Ce ne sera pas un func_door_rotating, mais un prop_door_rotating.
Cette porte model se configure comme un model, et comme un func_door_rotating. Il y a juste quelques propriétés qui diffèrent de l?entité func_ :
Rotation Distance : c?est l?angle d?ouverture de la porte
Fully Open Sound : son joué quand la porte est complètement ouverte
Fully Close Sound : son joué quand la porte est complètement fermée
Moving Sound : son joué durant l?ouverture/fermeture de la porte
Open Direction : c?est le sens d?ouverture ;
Open Both Directions : on ouvrira la porte dans les deux sens
Open Forward Only : la porte s?ouvre seulement en avant
Open Backward Only : la porte s?ouvre seulement en arrière
Il y a un flag important : Use closes. Cochez-le pour que les clenches soient affichées
Entités |
Type |
Description |
---|---|---|
Bloc |
Permet de créer un bloc qui se déplace en ligne droite |
|
Bloc |
Permet de créer un bloc rotatif qui peut revenir en place |
|
Ici, il s'agit de créer une porte de garage qui s'ouvre en même temps que le joueur tourne une vanne. A la fin d'Half-Life² EpisodeOne, Gordon ouvre une porte de cette manière pour faire passer Alyx. Il se fait alors canarder par un strider.
Nous avons vu comment réaliser une vanne, dans le chapitre sur les déclencheurs (La VALVe). Nous allons donc en créer une de la même façons (un model parenté à un momentary_rot_button avec une texture invisible).
Ehh, tu nous avais appris à faire une vanne avec un func_door_rotating. Pourquoi on prend cette nouvelle entité ?
momentary_rot_button se comporte de la même façon que func_door_rotation, mais il possède quelque chose en plus : il revient à sa position initiale quand on le lâche (quand on lâche la vanne donc).
Vous appellerez ce momentary_rot_button, door_vanne.
Ensuite, il faut créer la porte de garage. Faites votre bloc, et transformez-le en func_movelinear. Vous
l'appellerez door_garage. La configuration est simple, si ce n'est quelques paramètres :
Move Direction : c'est la direction dans laquelle le bloc bougera. Ici, la porte va monter, donc sélectionnez Up dans la petite liste déroulante.
Start Position : c'est le position de départ. Si votre porte est fermée, mettez 0.
Move Distance : c'est la distance, en unités de Hammer, sur laquelle l'entité va pouvoir bouger. Ca correspond généralement à la hauteur de votre bloc (moins quelques unités).
Revenons à notre momentary_rot_button. Il y a quelques propriétés à modifier :
Speed : vitesse de rotation en degrés par secondes
Distance : c'est le nombre de degrés maximum dont l'entité tournera
Auto-return Speed : c'est la vitesse de rotation quand la vanne est lâchée et qu'elle revient à sa position initiale
Start position : position de départ. Mettez 0.
Start Direction : direction dans laquelle tournera la vanne. Laissez Forward (en avant).
Vous pouvez aussi cocher certains flags comme Not Solid, Use Activate et l'axe de rotation (moi c'est Y Axis).
Passons maintenant aux outputs appliqués sur door_vanne .
Output named |
Targets entities |
Via this input |
Parameter |
Delay |
---|---|---|---|---|
OnFullyClosed |
door_vanne |
Lock |
<none> |
0.00 |
Position |
door_garage |
SetPosition |
<none> |
0.00 |
Le premier output dit que quand la vanne est complètement fermée, elle s'appele elle même pour se bloquer. Ainsi, elle ne retournera pas à sa position d'origine si elle est complètement fermée.
Pourquoi c'est pas OnFullyOpen ?
C'est tordu ça . L'état initial est Open, et l'état final est Close. Donc quand la vanne est tournée, elle est fermée (close).
Le deuxième output appelle la porte door_garage à chaque fois que le position de la vanne change (quand vous tournez quoi ). Et à chaque fois on va modifier, avec SetPosition, la position de la porte sur son axe, en fonction de l'ouverture de la vanne. Donc, plus on tourne, plus la porte s'ouvre .