Les portes

Porte translative

Entités

Type

Description

func_door

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

Porte rotative

Entités

Type

Description

func_door_rotating

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 (

Image utilisateur

). Vous devriez voir apparaître une grosse boule mauve au centre de votre porte :

Image utilisateur

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 :

Image utilisateur

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

Porte model

Entités

Type

Description

prop_door_rotating

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

Image utilisateur

Il y a un flag important : Use closes. Cochez-le pour que les clenches soient affichées ;)

Porte et vanne

Entités

Type

Description

func_movelinear

Bloc

Permet de créer un bloc qui se déplace en ligne droite

http://developer.valvesoftware.com/wik [...] ry_rot_button

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).

Image utilisateur

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 :) .

Image utilisateur