Champ de découragement

From Valve Developer Community
Jump to: navigation, search

Le champ de découragement ou champ de laser est un champ d'énergie spécial dans Portal 2 qui bloque seulement le joueur, pas d'autres objets. Cependant, le joueur meurs à son contact. Il est donc un élément à part entière de puzzle dans Portal 2.

Création manuelle:

Pour cet exemple, nous allons créer un champ de laser large de 128 unités. Commencez par sélectionner la texture tools/tollsnodraw. Avec l'outil de création de blocs, faites un cube de 128 de haut, 128 de large et 1 de profondeur.

Ouvrez l'outil d'application de texture, sélectionnez les deux faces de 128x128 et appliquez-y la texture effects/laserplane. Cliquez sur Fit pour adapter la texture aux faces sélectionnées.

Cliquez pour agrandir.

Assignez une entité func_brush au bloc en pressant ctrl + t, et paramétrez-là comme suit:

Nom de la propriété Valeur
Name champlaser_bloc
Render FX Constant Glow
Solidity Never Solid

Nous souhaitons que le laser tue le joueur à son contact. Pour cela, nous allons utiliser un trigger_hurt.

Commencez par dupliquer le cube. Positionnez-le sur les lasers de sorte à ce que les deux cubes se chevauchent et assignez-lui la texture tools/toolstrigger. Changez son entité en trigger_hurt paramétré comme suit:

Nom de la propriété Valeur
Name champlaser_trigger
Damage 1000
Damage Type ENERGYBEAM

Pour finir, cochez si ne n'est pas le cas le bouton Clients dans l'onglet Flags pour que le trigger fonctionne.

Et voilà! Les lasers sont fonctionnels. Mais vous serez d'accord avec moi si je vous disais que des lasers sortant de nulle-part, ça ne rime à rien...

Pour palier à ce problème, soit vous utilisez d'autres blocs (moche), soit vous vous utilisez des models:

Créez deux prop_static, à gauche et à droite des lasers.

Sélectionnez le model models/props/fizzler.mdl et choisissez le skin n°2.

Cliquez pour agrandir.

Créez un ambient_generic au milieu du bloc et paramétrez-le comme suit:

Nom de la propriété Valeur
Name champlaser_son
Sound Name Laser.BeamLoopMega
Volume 8
SourceEntityName champlaser_bloc

Désactivez Start silent et Is NOT looped dans l'onglet Flag. (Sinon ça ne marchera pas!!!)

Maintenant que le champ de laser est fonctionnel, fait du bruit et est affublé de décorations pour qu'il se fonde dans votre salle, il serai peut-être intéressant de pouvoir l'activer/désactiver.


Activation/désactivation:

On pourrais nommer cette partie "interaction ave le/les joueur(s)", mais vu que c'est la définition même d'un jeu vidéo, ça serait une sorte de pléonasme! Néanmoins, il peut être intéressant de pouvoir interagir avec ce champ de laser. Cela peu constituer un casse-tête supplémentaire! Alors pourquoi ne pas en profiter?


Pour notre cas, on va se contenter d'un prop_floor_button. Donnez-lui un nom, et assignez-lui ces outputs:

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnPressed champlaser_bloc Disable 0.00 No
Io11.png OnPressed champlaser_trigger Disable 0.00 No
Io11.png OnPressed champlaser_son StopSound 0.00 No
Io11.png OnUnPressed champlaser_bloc Enable 0.00 No
Io11.png OnUnPressed champlaser_trigger Enable 0.00 No
Io11.png OnUnPressed champlaser_son PlaySound 0.00 No

Et voilà! Votre champ de découragement est fonctionnel, et peut être activé/désactivé par un cube. Bon mapping!