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...
|