[Portal] Entités spécifiques

Le PortalGun

Entité

Type

Description

weapon_portalgun

Point

C'est la seule arme de Portal : le PortalGun (Handheld Portal Device)

Voici donc l'arme principe (et la seule) de Portal, le PortalGun. C'est cette arme qui permet à Chell (l'héroïne du jeu) de créer des portails partout où elle le désire (enfin, presque partout, nous y reviendrons :) ).

Le Handheld Portal Device

Pour commencer, voici les propriétés, inputs... de l'entité. Nous verrons ensuite comment mettre en place un socle pour le poser dessus, et le proposer au joueur d'une façon digne de ce nom.

Image utilisateur

Propriétés

Il n'y a que deux propriétés intéressantes, les autres sont connues :

  • Can Fire Portal 1 : Laissez Yes si le Gun est autorisé à créer de portails bleus

  • Can Fire Portal 2 : Pareil que Can Fire Portal 1, sauf qu'il s'agit ici du portail orange

Inputs
  • ChargePortal1 : Charge le tir du portail bleu

  • ChargePortal2 : Charge le tir du portail orange

  • FirePortal1 : Tire le portail bleu, et si la surface le permet, ouvre un portail bleu

  • FirePortal2 : Tire le portail orange, et si la surface le permet, ouvre un portail orange

  • FirePortalDirection1 : Le sens dans lequel sera tiré le portail bleu (angle)

  • FirePortalDirection2 : Le sens dans lequel sera tiré le portail orange (angle)

Les outputs sont des outputs génériques, communs à ma majorité des armes d'Half-Life² ;) .

Le socle

Image utilisateur

Le socle du PortalGun est en réalité un simple prop_dynamic pourvu du model models/props/pedestal_center_reference.mdl. Donnez un nom à votre prop, par exemple pied_portalgun. Le model est par défaut en position Close (fermé). Le truc est que quand le joueur approche du socle, il se déplie et présente le PortalGun au joueur. Mais auparavant, placez le weapon_portalgun et parentez-le au prop_dynamic.

Créez maintenant un trigger_once autour du socle. C'est ce trigger qui déclenchera l'ouverture du socle. Définissez lui cet output :

Output named

Targets entities

Via this input

Parameter

Delay

OnStartTouch

pied_portalgun

SetAnimation

Open

0.00

Et voilà, le tour est joué. Quand le joueur approchera du socle et déclenchera le trigger, le bras du socle de dépliera et lui présentera le gun :) .

Les portails

Entité

Type

Description

prop_portal

Point

Permet de placer un portail à un endroit précis

Les portails (orange et bleu) peuvent être ouverts de multiples manières :

  • par le joueur, sur des mur prévus à cet effet

  • par l'entité prop_portal, qui permet d'ouvrir, où le mappeur le veut, un portail (orange ou bleu)

  • par le PortalGun, grâce aux inputs FirePortal1 et 2.

Image utilisateur

Nous allons ici voir comment marche le prop_portal.

Cette entité comporte les propriétés habituelles ainsi que les suivantes :

  • Start Activated : Démarre avec le portail ouvert ou fermé

  • Portal Number : Type du portail : Portal 1 = bleu; Portal 2 = orange

  • Portal pair ID that it belongs to : ID de la paire de portail à connecter. Par défaut, cette propriété vaut 0, qui représente l'ID du PortalGun.

Un nouvel output viens faire son apparition : OnPlacedSuccessfully qui est activé si le portail s'est bien ouvert.
Pour les inputs, il n'y a que deux nouveaux venus :

  • Fizzle : permet de fermer de portail

  • SetActivatedState : permet d'activer ou de désactiver le portail. Mettez 1 pour l'activer, et 0 pour le désactiver.

Les murs anti-portails

Entité

Type

Description

func_noportal_volume

Bloc

Permet de bloquer la création de portails

Vous avez dû remarquer que dans Portal, il n'était pas possible de tirer des portails sur toutes les surfaces. Je vais ici vous expliquer comment réaliser ces murs "anti-portails".

Les mur anti-portails sont très simples à réaliser. Il faut soit une texture de métal issue de Portal (la map fournie comme exemple dans le SDK en comporte quelques-unes) ou une texture de vitre.
Ces deux types de textures bloquent toutes créations de portails avec le PortalGun, mais elles sont sans effets sur les prop_portal.

On peut aussi bloquer les portails avec une entité-bloc, le func_noportal_volume. Pour mettre en place cette entité, il suffit de la placer devant le mur que vous voulez protéger. Vous pouvez utiliser la texture toolstrigger.

Les tourelles

Entité

Type

Description

npc_portal_turret_floor

Point

Tourelle standard de défense de Portal

npc_rocket_turret

Point

Tourelle lance-roquettes

Il y a deux types de tourelles dans Portal : les tourelles de base, qui mitraillent le joueur en poussant des cris aigus, et les tourelles lanceuses de roquettes, comme celle qui permet de détruire GLaDOS (le robot à la voie sulfureuse ^^ ) à la fin du jeu.

Tourelles mitrailleuses

Ce premier type de tourelle se place avec l'entité npc_portal_turret_floor. Il n'y a qu'une propriété, Damage pushes player, qui si elle est définir sur Yes, provoquera le recul du joueur si celui si est blessé par la tourelle.

Il y a aussi quelques flags qui peuvent se révéler utiles, comme Autostart pour démarrer automatiquement ou Out of Ammo qui autorise à tourelle à être à court de munitions (mais ne le cochez pas, sinon c'est trop facile ^^ ).

Tourelles lance-roquettes

La tourelle lance-roquettes se place via l'entité npc_rocket_turret. La pose est extrêmement simple ; d'ailleurs, il n'y a pas de propriétés intéressantes, juste un flag, Disabled, qui permet de désactiver la tourelle par défaut. Si vous le cochez, il vous faudra "réveiller" la tourelle avec son input Enable :) .

Les caméras

Entité

Type

Description

npc_security_camera

Point

Caméra de surveillance

func_portal_detector

Bloc

Trigger qui détecte la création d'un portail sur sa surface

Les caméras de surveillance se placent avec l'entité npc_security_camera. Il n'y a rien d'autre à dire ^^ hormis le fait de ne pas oublier de cocher le flag Autostart.

Image utilisateur

La caméra sera détachable ?

Bien sûr que non ! Et je vais d'ailleurs vous expliquer comment rendre votre caméra détachable :) .

La caméra, par défaut est fixe. Il y a moyen de la faire réagir à la physique (donc de la faire tomber ^^ ) en déclenchant son input Ragdoll, quand un portail est créé derrière la caméra.

Mais, comment détecter la création d'un portail ?

Facile, il suffit de placer un bloc, transformé en func_portal_detector à l'endroit où la création d'un portail fera tomber la caméra. Il vous suffit d'ajouter l'output OnStartTouchBothLinkedPortals au func_portal_detector. Cet output appellera la caméra avec son input Ragdoll, comme ceci :

Output named

Targets entities

Via this input

Parameter

Delay

OnStartTouchBothLinkedPortals

super_camera_qui_tue

Ragdoll

<none>

0.00

Voici comment placer idéalement votre func_portal_detector :) :

Image utilisateur