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 Type Proximité: Ce type de porte
s'ouvre lorsque le joueur entre dans la zone de collision de
la porte et reste ouverte jusqu'à ce que le joueur en
sorte. 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 un joueur s'en approche et se ferme
quand le joueur s'en éloigne.
2) Ingrédients:
Trigger
Event Trigger Touch
Mover (la Porte)
Matinee
3) 3) Mélangeons le tout :
Dans la map, j'ai créé deux murs et placé
mon mover "porte" entre les deux. J'ai aussi ajouté
un trigger au milieu de la porte et agrandi son rayon de collision.
|
|
Du côté de Kismet, j'ai utilisé le trigger
pour créer l'event Trigger
Touch et j'ai ajouté une Matinee. J'ai connecté
le Touched au Play de la Matinee, et le Untouched au Reverse.
Ensuite, j'ai animé ma Matinee pour que la porte se déplace
sur le côté. A chaque fois que le Touched se déclenchera,
la porte s'ouvrira, permettant au joueur de passer et lorsque
le joueur quittera la zone de collision du trigger, le Untouched
se déclenchera et la porte se fermera. J'ai réglé
le MaxTriggerCount à 0 pour pouvoir utiliser la porte
indéfiniment.
|
|
4) Testez dans le jeu, cela fonctionne bien pour moi.
5) Ajustez votre système : Pensez aux problèmes
potentiels. Est-ce que le joueur peut "dépasser"
l'animation et toucher la porte avant qu'elle soit complètement
ouverte ? Dans l'image ci dessus, l'éclairage est un
peu bizarre, donc vous aurez à régler l'éclairage,
les ombres pour les lights aux alentours. La collision du mover
est par défaut réglée sur 'None', est-ce
OK ? Ou cela doit-il être réglé sur quelque
de chose de différent ? A propos du mouvement : semble
t-il naturel ou devez vous l'animer avec un peu plus de détails
? Est-ce que le joueur peut rester coincé derrière
la porte ? Ou entre la porte et l'encadrement de la porte?
Voulez vous ajouter des sons ou des emitters ? Ou un changement
d'éclairage lorsque la porte est ouverte ? C'est le moment
pour faire ces modifications dans Kismet.
Si vous voulez ajouter des sons, nous pourrions les ajouter
directement dans le mover lui-même. Ouvrez ses propriétés
et allez dans Interpactor. Vous pouvez sélectionner vos
sons dans le generic browser et les assigner ici. Assurez vous
ensuite que leur durée est correcte (ni trop long ni
trop court par rapport à ce qu'ils sont sensé
exprimer). Ces champs ne devraient seulement fonctionner que
pour un Mover (par
contre, je n'ai pas fait plus de tests que ça).
|
|
On peut aussi ajouter des sons par le biais du système
de pistes de Matinee. Ajoutez simplement un nouvel Event Track
au group du Mover et ajoutez des clés aux moments désirés
pour ajouter des events. Pour tous ces events, après
les avoir nommé, vous aurez une sortie avec ce nom qui
apparaîtra sur la Matinee. Utiliser ces sorties pour les
relier à des actions 'Play Sound'. Vous aurez probablement
à désigner une Target (cible). Le mover lui même
devrait suffire comme target, comme montré dans l'image
ci dessous. Note : j'ai caché les connecteurs inutilisés
dans mes entités Kismet.
|
|
Vous pourriez également ajouter à ce système
des Emitters et leurs sons associés. Dans l'image ci
dessous, j'ai ajouté des Toggle pour activer deux Emitters
d'étincelles différents, le tout basé sur
mes Events créés précédemment. J'ai
ensuite ajouter les sons des emitters d'étincelles en
les ciblant sur les Emitters pour le son semble provenir des
étincelles. J'ai caché les connecteurs inutilisés.
Comme vous le voyez, vous pouvez ajouter une multitude d'effets
au système pour l'améliorer autant que vous voulez.
J'aurais également pu ajouter des Lights Toggeable, ou
n'importe quoi d'autre. De même, j'aurais pu connecter
les sorties 'out' des premiers Play Sound (ceux des portes)
aux Toggles des Emitters. Cela n'a pas d'importance.
|
|
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 regardez le bPLayerOnly dans l'image un peu plus haut,
je l'ai décoché. Cela signifie que des PNJs ennemis
peuvent eux aussi déclencher la porte. Est-ce que c'est
ce que vous voulez ? En mode multi-joueur, que se passe t-il
si deux joueurs touchent le rayon de collision ? Cela va t-il
perturber l'animation ? Si un quitte la zone de collision, cela
va t'il faire refermer la porte sur le deuxième joueur
? Si je devais adapter ce système au mode multi-joueur,
j'ajouterais les compteurs décris dans la section Mode
Solo/Co-op/Multi-joueur, de ce fait, il n'y aura pas de
problèmes de joueurs restant coincés ou de système
perturbé. Une fois fini, cela devrait ressembler à
ca:
|
|
Après avoir fait mes réglages, j'ai cliqué
droit sur mes entités et caché les connecteurs
inutilisés.
|