*Note: I created the most of the tutorials using the Roboblitz and Gears of War editors. Based on the engine, and the version, some properties specified may be in slightly different locations than what is displayed in the screenshots.

If you need to learn how to create a basic map I would reccomend:
For UT99, UT2K3 & UT2K4: the Unreal Wiki.
For UT3: Waylon's Tutorials.



Interactions Classiques - Porte/Dégâts



J'ai créé une simple map de test consistant en un peu de BSP, une skylight, un playerstart, un skydome et une DirectionalLight.

Je vais seulement utiliser des éléments de base de l'éditeur qui se trouvent dans les packages officiels.

Je vais seulement utiliser des movers/Interpactors (cela revient au même) qui sont généralement animés avec Matinee. Si vous avez besoin d'apprendre à utiliser Matinee, je vous recommande le Tutorial de Hourences comme point de départ.

J'ai ajouté un static mesh cube dans la map et l'ai converti en Interpactor. Je l'ai ensuite modifié pour qu'il ressemble à une porte. Le pivot est au centre et je vais uniquement l'animer de haut en bas ou d'un côté et de l'autre. Une porte pivotante nécessitera un point de pivot situé sur sa charnière, et vous aurez à penser où le joueur se trouvera pour qu'il ne soit pas écrasé contre un mur lors de l'ouverture de la porte.

*Note: Les points de pivot (ou d'origine) des statics meshes servent de point charnière ou de centre de rotation pour les Interpactors. Si vous avez besoin de créer une porte, ou n'importe quel autre objet mobile qui tournera, pivotera ou se balancera, vous aurez besoin de connaître son point de pivot. Il est impossible de redéfinir un point de pivot de façon permanente avec ce moteur. Si vous trouvez un static de porte qui vous plait bien pour en faire une porte pivotante mais que son pivot est en son centre, et bien vous n'avez pas de chance ! Le point de pivot est déterminé lors de la création du static dans un logiciel de 3D mais pas dans UnrealEd.

Portes activées par Dégâts : Ce type de porte s'ouvre lorsqu'on lui tire dessus ou qu'elle reçoit des dégâts. J'ai créé un système très simple.

Utilisons notre "recette de cuisine" que j'ai présenté dans l'Introduction de cette série de tutoriaux:

1) Que souhaitons nous faire ?
Une porte qui s'ouvre quand on lui tire dessus.

2) Ingrédients:
Mover (door)
Event Damage
Matinee

3) Mélangeons le tout :
Dans la map, j'ai créé deux murs et placé mon mover "porte" entre les deux.




Du côté de Kismet, j'ai créé un event Take Damage à partir du mover porte. J'ai réglé son 'DamageThreshold' (seuil de dégâts) sur 10, ses 'Minimum Damage' (dégâts minimum) à 5 et son MaxTriggerCount à 0. J'ai caché les connecteurs inutilisés de la Matinee. Donc lorsque la porte prend n'importe quelle sorte de dégâts, cela activera la Matinee et ouvrira la porte.




4) Testez dans le jeu, cela fonctionne bien pour moi.

5) Ajustez votre système : D'abord, n'oubliez pas les problèmes de collision de vos movers et leur éclairage. Ensuite, pensez aux problèmes potentiels. Voulons-nous qu'il se passe autre chose ? Si nous voulons ajouter des sons, nous pourrions les ajouter par l'intermédiaire d'un Event track dans la Matinee ou dans le mover lui-même. Ouvrez ses propriétés et allez dans Interpactor comme montré ci-dessous. Vous aurez à sélectionner les sons dans le Generic Browser et les assigner dans leur champ approprié. Assurez vous qu'ils sonnent bien une fois mis (qu'ils ne soient pas trop courts ou trop longs par exemple). Ces champs ne doivent être seulement disponibles que pour des Movers. Cependant je n'ai pas plus de test que ça.




Y'a t-il autre chose que vous souhaitons faire ? D'abord, est-ce que la porte doit rester ouverte, ou se fermer après un certain temps ? Fermons là après 5 secondes. Je vais donc ajouter un 'Delay' au système. Nous allons connecter la sortie Completed de la Matinee au 'Delay', le régler sur 5 secondes et connecter sa sortie à l'entrée Reverse de la Matinee. J'ai ajouté une 'Gate' pour empêcher des dégâts de re-déclencher la Matinee avant que le cycle ne soit fini, mais maintenant je dois trouver un moyen de contrôler sa réouverture. Donc je vais ajouter un deuxième 'Delay' qui à la durée totale d'un cycle de la Matinee (dans ce cas là : 2 secondes) et l'ajouter de manière à rouvrir la 'Gate'. Je vais aussi coché le 'RewindOnPlay' dans les propriétés de la Matinee.




Ensuite je vais ajouter des sons au système en passant par Kismet et non dans les propriétés du mover. J'ai créé un Event Track dans la Matinee, et je vais activer le son de fermeture avec la sortie du Delay qui commande la fermeture. J'ai également ciblé (target) les sons sur le mover porte pour donner l'impression qu'ils en viennent.




Maintenant, que se passe t-il si un joueur est coincé lorsque la porte de referme ? Je vais devoir utiliser l'Event 'Hit Actor' d'un Mover pour soit, rouvrir la porte, soit tuer le joueur. Je choisis de rouvrir, mais vous pourriez facilement accroché un CauseDamage au joueur. Par contre, je vais devoir créer une deuxième Matinee pour animer la fermeture de la porte et de connecter le Hit Actor à ce système pour que cela fonctionne correctement. Au final, si le joueur heurte la porte, je vais avoir besoin d'arrêter le son de fermeture de la porte et de jouer le son de réouverture.




6) Ajustements pour les modes solo/multi-joueur. Comme vous l'avez sûrement lu dans la section Mode Solo/Co-op/Multi-joueur, il y a beaucoup de considérations à prendre en compte pour n'importe quel système que vous créez. Votre système peut être dans un premier temps OK pour un mode solo, mais vous devriez toujours vous poser quelques questions. Que se passe t-il si deux joueurs se battent à travers la porte ? En fait, il semble que cela soit OK. Et si ils tirent tous les deux sur la porte ? Bien, cela s'ouvrira de nouveau aussi longtemps que la porte recevra des dégâts … cela semble donc bon. Si vous voulez que des PNJs puissent ouvrir la porte, vous aurez à ajouter quelque chose qui indique à l'intelligence artificielle d'activer les boutons. Sinon, le système à l'air bien complet comme ça. A moins que vous souhaitiez rajouter des lumières dynamiques ou des emitters...