Aller au menu - Aller au contenu

Icône Rotations

Mise à jour : 22/07/2009
1 414 visites depuis 7 jours, dont 14 sur ce chapitre classé 94/786
Les objets rotatifs sont un peu particuliers dans Half-Life à cause de la texture ORIGIN. Ce chapitre sera l'occasion pour nous de faire le point sur les rotations et de voir 2 entités qui l'utilisent.

Il existe bien plus d'entités rotatives que cela, mais je n'en parle pas ici. J'ai préféré les garder pour les chapitres qui vont le mieux avec (exemple : l'ascenseur rotatif dans le thème sur les ascenseurs).
Ces 2 entités-là ne rentrent dans aucun thème particulier, voilà donc pourquoi je les ai mises dans ce chapitre.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Objets rotatifs

Entité concernée : func_rotating
Type d'entité : entité-bloc
Difficulté : moyen

Parmi les objets que l'on rend rotatifs, il y a surtout des hélices, que ce soient des hélices de ventilateurs géants ou bien des hélices d'hélicoptère.

Dans un premier temps, il vous faut créer l'objet que vous allez rendre rotatif. Je vais par exemple créer un petit ventilateur :

Image utilisateur


Avec un peu d'expérience du Morphing Tool, vous devriez pouvoir faire pareil que moi (et certainement mieux lol) ;)

Il va maintenant falloir placer un bloc spécial, entièrement recouvert de la texture ORIGIN. Cette texture (représentant un visage vert) est particulière car elle n'est pas visible quand on joue (heureusement), et elle indique au moteur de Half-Life le centre de rotation de l'objet.
Qu'est-ce que le centre de rotation de l'objet ?
C'est l'endroit autour duquel il tourne. En pratique, c'est l'endroit qui se déplace le moins.
Sur mon exemple, les hélices tournent autour d'un centre (au milieu). C'est cet endroit qui est le centre de rotation de l'objet. C'est là qu'il va falloir poser notre bloc ORIGIN :

Image utilisateur


A vous d'adapter ce cas à votre situation, mais vous ne devriez pas avoir trop de mal maintenant que je vous ai montré où j'ai placé mon bloc ORIGIN...

Bien, maintenant sélectionnez votre objet ET le bloc Origin, puis cliquez sur le bouton "ToEntity".
Choisissez l'entité func_rotating et éditez maintenant ses propriétés :
  • Name : nom de l'entité si celle-ci est déclenchée par un trigger.
  • Render FX, Render Mode, FX Amount et FX Color : voir le chapitre sur la transparence pour savoir comment les utiliser.
  • Pitch Yaw Roll : c'est l'orientation de l'entité. Vous pouvez la modifier aussi grâce au radar en haut à droite. Normalement, vous ne devriez pas avoir besoin de modifier ces valeurs pour cette entité.
  • Light Flags et Light Origin : ces champs n'apparaissent pas toujours, cela dépend du FGD que vous possédez. Ils permettent de modifier les informations de lumières pour cette entité. Vous n'en aurez pas besoin ici.
  • Rotation Speed : vitesse de rotation de l'objet. Pour un ventilateur comme le mien, je vous recommande de mettre au moins 500, sinon plus, parce qu'en-dessous on a l'impression que c'est à l'arrêt ;)
  • Volume (10 = loudest) : le ventilateur peut produire du son et remplacer ainsi l'entité ambient_generic. Mettez ici le volume du son (valeur de 1 à 10). Je vous recommande de mettre 10 pour qu'on entende quelque chose :)
  • Friction (0 - 100%) : ce pourcentage correspond à la vitesse à laquelle l'entité va freiner (le flag "Acc/Dcc" doit être coché).
  • Fan Sounds : son que va produire le ventilateur (en anglais : fan = ventilateur). Laissez "No Sound" si vous ne voulez pas que l'entité produise du son.
  • WAV Name : nom du fichier WAV à jouer lors de la rotation. Utilisez cet attribut uniquement si les sons de "Fan Sounds" ne vous conviennent pas.
  • _minlight : niveau de luminosité minimum. Pour que l'entité soit visible même s'il fait noir ;)) C'est un attribut très rarement utilisé.
  • X Y Z - Move here after lighting : je ne me sers pas trop de cet attribut. C'est la position initiale de l'entité (en coordonnées X Y et Z) après que la pièce ait été éclairée. Je n'en vois pas vraiment l'intérêt...
  • Damage inflicted when blocked : si le joueur est coincé par une des hélices, alors il perdra le nombre de points de vie indiqués ici.
Voyons voir maintenant les flags de cette entité. Ils sont nombreux :
  • Start ON : l'objet est actif dès le début du niveau. Cochez ce flag si vous voulez que l'objet tourne sans avoir été appelé par un trigger auparavant. C'est assez fréquent, alors si votre ventilateur ne tourne pas vous saurez pourquoi ;))
  • Reverse Direction : l'objet tournera en sens inverse.
  • X Axis : l'objet tournera selon l'axe des X (au lieu de Z par défaut).
  • Pour savoir quel axe utiliser, j'ai une astuce. Regardez dans vos vues 2D sous Worldcraft : dans l'une d'entre elles la ventilateur apparaît de face.

    Image utilisateur

    En haut à gauche, deux lettres appraissent (ici X et Z). La lettre qui manque (Y) est l'axe sur lequel l'engin va tourner. C'est tordu mais ça marche :)
  • Y axis : l'objet tournera sur l'axe des Y (au lieu de Z).
  • Acc / Dcc : l'objet accélèrera et décélèrera doucement. Idéal pour montrer que le ventilateur se met en place ou est en train de s'arrêter.
  • Fan Pain : aïe bobo ! Si ce flag est coché, le joueur sera repoussé par le ventilateur s'il s'en approche de trop près. De plus, il va perdre des points de vie très rapidement (voire se faire hacher s'il persiste à vouloir passer ;))
  • Not Solid : l'entité n'est pas matérielle. Le joueur peut alors passer à travers comme si elle n'existait pas.
  • Small Radius : comme on l'avait vu pour le thème d'entités sur le son, ce flag fait en sorte que le son soit entendu dans un faible rayon.
  • Medium Radius : idem pour un rayon moyen.
  • Large Radius : idem pour un large rayon.


Voilà, testez votre niveau et vous verrez l'objet s'animer ! Idéal pour mettre un peu de vie dans une map !
Si votre objet ne s'anime pas, vérifiez que vous avez bien coché le flag "Start ON", et que vous avez donné une vitesse à la rotation de l'objet.

Objets pendants

Entité concernée : func_pendulum
Type d'entité : entité-bloc
Difficulté : moyen

Pas évidents à réaliser... et pourtant ça vaut le coup je vous assure ! Les objets qui pendent sont très rares dans les maps, peu de monde les connaît ! Alors créez la surprise en montrant au joueur pour la première fois une fonctionnalité du moteur de Half-Life qu'il ne connaissait pas !

Il va nous falloir un exemple pour que vous compreniez bien le fonctionnement d'une telle entité.
Je veux par exemple faire pendre une corde :

Image utilisateur


D'autres applications sont possibles : un pendule, un objet qui vient de se détacher du plafond etc...

Bref, je transforme cette corde en entité func_pendulum, puis j'édite ses propriétés :
  • Global Entity Name : nom global de l'entité si celle-ci est utilisée sur plusieurs niveaux.
  • Name : nom de l'entité.
  • Render FX, Render Mode, FX Amount et FX Color : pour en savoir plus, lire le chapitre sur la transparence.
  • Speed : vitesse de déplacement de l'objet.
  • Distance (deg) : angle de rotation en degrés. Cette entité doit tourner en décrivant un certain angle (généralement inférieur à 90°) qu'il faut préciser ici.
  • Damping (0-1000) : imaginez que la corde fasse une rotation à une vitesse de 100 tout le temps. Il va y avoir quelque chose qui va clocher : en effet, lorsque la corde a décrit un mouvement, elle doit freiner son mouvement (sinon elle s'arrêterait brusquement et ce serait perturbant car pas naturel).
    En bref, mettez ici une valeur entre 0 et 1000 qui indiquera si l'entité doit plus ou moins freiner son mouvement entre chaque rotation.
  • Damage inflicted when blocked : si le joueur est coincé par cette entité, alors il perdra le nombre de points de vie indiqués ici.
  • _minlight : niveau de luminosité minimum, pour que l'entité reste visible même dans le noir ;)
  • Pitch Yaw Roll (Y Z X) : orientation de l'entité, que vous pouvez modifier aussi grâce au radar en haut à droite de la fenêtre. Il peut être intéressant de modifier l'orientation pour cette entité, à vous de voir...
Les flags sont les suivants :
  • Start ON : l'entité est active dès le lancement du niveau. Sinon, il faudra l'activer avec un trigger.
  • Passable : on peut traverser cette entité, elle n'est pas matérielle. Le joueur comme les ennemis passeront donc à travers comme si elle n'existait pas.
  • Auto-return : l'entité revient à chaque fois à sa position initiale. Il paraît que cette fonctionnalité est un peu buggée d'après Valve, moi j'ai testé et effectivement il arrive parfois que l'objet s'arrête brusquement.
  • X Axis : comme je vous l'ai expliqué plus haut, si vous voulez que l'entité tourne sur l'axe des X au lieu de Z, alors cochez ce flag.
  • Y Axis : idem pour l'axe des Y.
  • Not in Deathmatch : l'entité n'apparaîtra pas dans une partie multijoueurs.
Il va peut-être vous falloir tester votre map plusieurs fois avant d'obtenir l'effet désiré. Surveillez notamment les attributs Speed, Distance et Damping... ce sont eux qui sont principalement responsables de la rotation de votre objet.
Je reconnais que les rotations sont un peu difficiles à manier au début, mais vous verrez que, petit à petit, vous saurez placer rapidement le bloc ORIGIN. Les problèmes avec le centre de rotation ne seront alors plus qu'un lointain (et mauvais) souvenir.
Chapitre précédent Sommaire Chapitre suivant

Partager

Il n'y a pas encore de commentaire pour ce tuto.