Panneaux

From Valve Developer Community
< Fr
Jump to: navigation, search
English (en)Français (fr)Русский (ru)Translate (Translate)
"Les planches de demain !"
- Cave Johnson

Les Panels (ou panneaux), sont des éléments clefs des salles de test de Portal 2(en). Les panneaux sont formés d'un bras robotique, plutôt court ou long selon son utilisation. Ils permettent à l'environnement d'évoluer selon les besoins, en modifiant les murs, le sol, ou le plafond. Ils peuvent aussi former des escaliers, des portes, ou des rampes. Ainsi les salles de test sont modifiables à volonté, et donnent vie aux tests.

Création d'un panneau

1. Créez une entité prop_dynamic(en), avec les paramètres suivants :

Property Name Value
World Model models/anim_wp/room_transform/arm64x64_interior.mdl
Name panel1
HoldAnimation true
Collision Not Solid

2. Créez un bloc func_brush(en) de dimension 256Lx256Wx32H sur le model. Paramétrez le comme ceci :

Property Name Value
Name panel1_brush
Parent panel1
Ici l'animation "makeramp_06open" qui permet de soulever à 90 degrés un panneau.

3. Créez une entité logic_auto(en) avec les Outputs suivants :

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnMapSpawn panel1_brush SetParentAttachmentMaintainOffset panel_attach 0.10 Yes(?)


A présent grâce à cet attachement, le panneau peut suivre l'animation du modèle, selon la pose désirée.


4. Créez une entité logic_relay(en), avec les paramètres suivants :

Property Name Value
Name relay_panel1_animation

et les Outputs suivants :

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnTrigger panel1 SetAnimation (Nom de l'animation) 0.00 Yes(?)


Les noms d'animations sont disponibles dans le Model Browser dans la catégorie "Sequences" du model.

Liste des attachements des panneaux aux bras

L'attachement des panneaux au bras peut varier selon le bras robotique, ou le model. Voici la liste des noms des attachements à la base selon le model du bras : Notez que "Idle" correspond à immobile, ou "static". Cela veut dire que le bras ne bougera pas et restera dans sa position par défaut.


Chemin du model Animé Nom de l'attachement du panneau.
anim_wp\arm_interior_192\arm_interior_128.mdl Oui GLASS - N/A
anim_wp\arm_interior_192\arm_interior_192.mdl Oui GLASS - N/A
anim_wp\arm_interior_192\video_arm.mdl Oui monitor_attach
anim_wp\arm_interior_192\video_arm_big.mdl Oui monitor_attach
anim_wp\circle_shield\circle_shield.mdl Oui panel_top
anim_wp\framework\circle_shield_static.mdl Non N/A
anim_wp\room_transform\arm64x64_interior.mdl Oui panel_attach
anim_wp\room_transform\arm64x64_interior_rusty.mdl Yes panel_attach
anim_wp\telescope_arm\telescope_arm.mdl Oui panel_top
anim_wp\telescope_arm_128\telescope_arm_128.mdl Oui panel_top
anim_wp\telescope_arm_128\telescope_arm_128_glass.mdl Oui GLASS - panel_top
anim_wp\telescope_arm_128\telescope_arm_128_idle.mdl Non N/A
anim_wp\telescope_arm_128\telescope_arm_128_upidle.mdl Non N/A
anim_wp\telescope_arm_128\telescope_arm_128x256.mdl Yes GLASS - panel_top
anim_wp\telescope_arm_trans\telescope_arm_trans.mdl Oui GLASS - panel_attach
props_livingwall\armliving64x64.mdl Oui panel_attach

Taux de vitesse d'une animation

Il est parfois nécessaire pour un bras (ou n'importe quel autre prop_dynamic(en)) de "s'animer" plus ou moins vite. Le taux de vitesse d'animation d'une entité prop_dynamic(en) est exprimé en pourcentage, ou 1 est équivalent à 100%, 2 à 200%, 0.5 à 50%, et 0 à 0%. (Notez qu'à 0% le model est à l'arrêt). Il y a 2 moyens possibles pour le modifier :

La première méthode est la plus simple, et est applicable à tous les prop_dynamic(en). Le taux peut être établi au bras et il gardera en permanence ce taux. (C'est à dire que le bras jouera n'importe quelle animation avec ce taux). Un nouvel Output doit être alors ajouté au bras.

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnAnimationBegun !self SetPlaybackRate 5 0.00 No

Ainsi le bras jouera son animation 5 fois plus vite. Notez que le !self est une commande spéciale qui permet à une entité de s'appeler sois même.


La deuxième méthode est plus compliquée mais plus "flexible" pouvant s'adapter à des circonstances particulières. Pour cela il vous faut créer une entité bloc trigger (comme par exemple un trigger_once(en), etc...) avec les Outputs suivants :

My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnStartTouch arm_1 SetAnimation pitflings_angled_01 0.00 No
Io11.png OnStartTouch arm_1 SetPlaybackRate 2 0.01 No

Les Outputs suivant vont faire que lors du déclenchement, arm_1 va commencer son animation, et un centième de seconde plus tard le taux de l'animation va augmenter à 200%. (Notez que si les deux Outputs sont déclenchés au même moment, le taux restera à sa valeur de défaut soit 1).

Voir aussi