Entité |
Type |
Description |
---|---|---|
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 ).
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.
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
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 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 .
Entité |
Type |
Description |
---|---|---|
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.
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.
Entité |
Type |
Description |
---|---|---|
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.
Entité |
Type |
Description |
---|---|---|
Point |
Tourelle standard de défense de Portal |
|
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.
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 ).
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 .
Entité |
Type |
Description |
---|---|---|
Point |
Caméra de surveillance |
|
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.
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 :