SourceEngine Simuler le réveil du joueur

  • Initiateur de la discussion
  • Administration
Seb

Seb

El Dictator
Membre du Staff
Messages
1 875
Score réaction
454
Points
370
Ce tutorial réalisé entièrement par tagazoc et provient des archives de mapping-area et modding-area.
Les archives sont anciennes, certains tutoriels peuvent ne plus correspondre aux dernière versions.


-

Bonjour,

Dans ce tutorial nous allons voir comment simuler le réveil du joueur à la manière du début d’Half Life épisode one.
Vous pouvez retrouver ce tutorial en anglais sur http://www.interlopers.net/tutorials/24083

En fin de page de ce site on peut télécharger une map d’exemple.


ENV_FADE

Tout d’abord pour plus de réaliste on peut mettre un env_fade qui est une entité qui permet de faire un fondu entrant ou sortant vers une couleur.
En l’occurrence ici il serait plus logique de faire un fondu sortant du noir (puisque notre cher Gordon est censé se réveiller).

Pour cela mettez un env_fade n’importe où dans votre map et configurez-le comme tel :
  • Name : fondu
  • Duration (seconds) : 6 (c’est le temps que met votre fondu)
  • Fade color : 0 0 0 (la couleur du fondu, ici c’est noir)

Flags :
  • [X] fade from

Voila votre env_fade est configuré il restera plus qu’a l’appeler avec un trigger.


POINT_VIEWCONTROL

En suite passons aux choses sérieuses.

Insérez un point_viewcontrol près du lieu où va se réveiller le joueur (sa position n’a pas d’importance). Un point_viewcontrol est une caméra qui va remplacer les yeux du joueur et le rendre non contrôlable.

Configurez-le ainsi :

  • Name : playereyes_viewcontrol

Flags :
  • [X] freeze player
  • [X] infinite hold time

Tout le reste n’est pas coché.


PROP_DYNAMIC

L’effet que Gordon se lève est en faite joué par un prop_dynamc au quel on va parenter le point_viewcontrol.
Insérez un prop_dynamic à l’endroit même où vous voulez que le joueur se lève.

Configurez-le ainsi :
  • Name : playereyes_model
  • World model : models/blackout.mdl
  • Collisions : Not solid

Outputs :
  • OnAnimationDone - player_teleport_trigger - Enable - 0.00

Vous verrez par la suite à quoi sert cet output.
Mon dieu le model n’apparait pas dans la vue 3D !!! Pas de panique c’est normal il est invisible, bah oui forcément un mouvement ce n’est pas visible.

Par contre dans les vue 2D il est représenté par un rectangle, pour ça position nous allons voir cela dans ce qui suit.


INFO_TELEPORT_DESTINATION

Bon si vous êtes toujours la on continue avec l’installation d’un info_teleport_destination. Il sera le point d’arrivé lorsque Gordon aura fini de se lever. C’est pour cela que ça position est très importante, et oui vous ne voulez pas qu’après s’être levé il se téléporte à 5m du lit.

Bon le mieux je pense c’est de mettre quelques screenshots et puis faire des essais jusqu’à que ce soit satisfaisant.

leverjoueur_top.jpg



Donc il faut que le centre de l'info_teleport_destination soit dans la pointe du prop_dynamic. Vous allez me dire : mais de quel côté ?
Et bien du côté où est représenté un petit carré (si vous avez activer le bouton qui rend les prop détaillés dans les vues 2D, barre hammer, le 2è apres le bouton de compile)

leverjoueur_front.jpg



On peut voir que l'info_teleport_destination est à une unité du sol pour éviter que le joueur reste coincé.
Mettez le prop_dynamic une à deux unités du sol comme sur l'image.

Configurez-le ainsi :
  • Name: Teleport_destination


TRIGGER_TELEPORT

Maintenant faite un bloc avec la texture trigger que vous transformez en trigger_teleport. Mettez le la où vous voulez que commence notre petit cinématique de Gordon qui se lève. Dans mon exemple je le mets sur l’info_player_start pour que le réveil se passe au début de la map.

Configurez-le ainsi :
  • Name: player_teleport_trigger
  • Start Disabled: Yes
  • Remote Destination: Teleport_destination

Outputs :
  • OnStartTouch - player_teleport_trigger - Disable - 0.00
  • OnStartTouch - playereyes_viewcontrol - Disable - 0.00
  • OnStartTouch - playereyes_viewcontrol - Kill - 0.20
  • OnStartTouch - playereyes_model - Kill - 0.20

Voilà ça c’est fait !



LOGIC_RELAY

On va maintenant ajouter un logic_relay pour configurer le tout.

Configurez-le ainsi :
  • Name: relay_playerevent

Outputs :
  • OnTrigger - playereyes_viewcontrol - SetParent - playereyes_model - 0.00
  • OnTrigger - playereyes_viewcontrol - SetParentAttachment - vehicle_driver_eyes - 0.10
  • OnTrigger - playereyes_viewcontrol - Enable - 0.20
  • OnTrigger - playereyes_model - SetAnimation - exit1 - 5.00

Vous avez rien compris aux Outputs ? Ce n’est pas grave vous avez juste à copier ! Je m’excuse de ne pas expliquer en détaille qui fait quoi mais ça serait beaucoup trop long déjà que je pense que vous êtes impatients que ce tutorial soit terminé ! Mais je m’efforcerais de faire un petit résumé à la fin rien que pour vous.



TRIGGER_ONCE

On arrive presque au bout. Maintenant il faut mettre un trigger_once sur l’info_player_start où on a précédemment placé un trigger_teleport.

Configurez-le ainsi :

Outputs :
  • OnTrigger - relay_playerevent - Trigger - 0.00
  • OnTrigger - fondu - Fade - 0.00


Voila c’est enfin terminé !
Comme promis je vous explique brièvement ce qui se passe.

Lorsque la map démarre le joueur qui se trouve à l’info_player_start active le logic_relay par le biais du trigger_once qui déclenche également le fondu noir.
Le logic_relay parente notre point_viewcontrol au prop_dynamic et démarre l’animation du model. Celui-ci active le trigger_teleport lorsque l’animation commence.
Ainsi après l’animation le joueur ne sera pas ramené à l’info_player_start. Mais se trouvera sur l’info_teleport_destination, c'est-à-dire debout à côté de son lit !

Vous n’avez toujours pas compris comment ça marchait ? Ah bah la je ne peux plus rien faire pour vous.
Bon aller je vais être gentil je vous ai fait un schéma de ce que vous devriez avoir.


leverjoueur_3d.jpg
 
Discord Hytale, Minecraft, Rust, ARK, FiveM

Découvrez mTxServ!

Discord d'entraide

Rejoignz-nous sur Discord