❤ 0 But : Créer un détecteur grâce aux événements.
Mon parti pris : Le héros va demander à un totem de retrouver des PNJ dispersés sur la map. Il devra entrer le nom de la personne à retrouver, et le totem lancera un sortilège sur le héros lui donnant la direction où fouiller, à la manière du capteur de mouvement de Aliens.
Le sortilège m'indique avec ces ondulations que mon camarade est tombé dans le puits
Version courte (principe de base) :
En enlevant toutes les fioritures, voilà ce qu'il nous faudra :
1 - une animation ;
2 - un événement commun ;
3 - un interrupteur.
1 - On commence par créer l'animation du détecteur (j'ai opté pour des ondulations du genre "radar", à savoir l'apparence "Special 6") avec un son de pulsation pas trop agressif (j'ai choisi "Wind 1") puisqu'il va se répéter en boucle.
L'animation en détail
Spoiler (cliquez pour afficher)
Débutant en animation ? Voilà comment s'y prendre :
Crée quelques slots vides à gauche pour y mettre des animations en cliquant sur "Définir Maximum".
Entre un nom dans le premier slot, par exemple "nord". Choisis une apparence qui te plaît, laisse la position "Au milieu" et choisis le nombre d'image de ton animation avec "Nombre de frames".
Sélectionne la première frame #001, sélectionne la première image de l'animation tout en bas et colle-la en cliquant en alignant le centre blanc du carré rouge au centre des traits verts.
Passe à la frame #002, sélectionne la deuxième image en bas, et aligne-la sur la première en te servant du cadre bleu en transparence qui t'indique la position de l'image sur la frame précédente. Continue jusqu'à la dernière image. Tu peux expérimenter en changeant le nombre de frame, en sautant ou en répétant des images, ou en double-cliquant sur le carré rouge pour faire apparaître quelques options.
Pour rajouter des sons et des flashs, double-clique dans le cadre "SE et flashs". Tu peux choisir à quel moment ton effet s'enclenche et sa durée.
Maintenant, il faut ajuster tout ça. Ces animations sont prévues pour les combats et sont donc très grandes. Pour l'utiliser sur la map, on les diminue en général d'au moins 50%. Pour ce faire, clique sur "Modifier en masse...", coche "Zoom" et entre le chiffre 50.
Ton animation est prête à être dupliquée. Clique-droit sur le slot "nord", choisis copier, et colle-le sur les 7 slots suivants.
Pour la suite, il faut comprendre les coordonnées :
l'intersection des axes X (horizontal) et Y (vertical) est au coin en haut à gauche donne les coordonnées 000,000. Le coin bas droite de la plus petite map possible (17 cases x 13 cases) est donc 016,012
Commençons à modifier le slot "nord". Clique sur "Tout déplacer..." et monte l'animation d'une case (32 pixels) par rapport à ton personnage en mettant "-32" dans "Coordonnées Y", et c'est tout, ton animation "nord" est prête. Continue en ajoutant 32 Y pour le SUD, -32 X pour l'OUEST, 32Y et 32X pour le SUD-EST, etc.
On la duplique en 8 exemplaires et, avec l'option "Tout déplacer", on les place aux 8 points cardinaux par rapport au centre de l'animation, en les nommant en conséquence NORD, NORD-EST, EST, SUD-EST, etc. C'est tout pour l'animation.
2 - Ensuite, on crée un événement commun "Détecteur" en Processus parallèle avec un interrupteur "Détection". Dans cet événement, on crée une boucle avec en tête deux variables "X héros" et "Y héros" qui détermineront la position du héros en tout temps, et dans cette boucle, on crée les 8 conditions pour l'affichage de l'animation.
Comment déterminer les variable de la position du héros
Spoiler (cliquez pour afficher)
Ce qu'on veut, c'est qu'une fois les variables de la cible déterminées par l'interrupteur :
- l'animation NORD s'enclenche si le héros est à la fois sur le même axe X que la cible et plus bas sur l'axe Y de la cible ;
- l'animation NORD-EST s'enclenche si le héros est à la fois à gauche sur l'axe X de la cible et plus bas sur l'axe Y de la cible ;
- etc.
Une fois les 8 conditions posées, on ajoute une commande "attendre" de minimum 1 frame pour éviter que la boucle ne freeze le jeu (comme je ne veux pas que mon détecteur pulse trop vite, je mets 60 frames), et on ajoute aussi une commande de sortie pour laisser au joueur la possibilité de couper le détecteur s'il veut changer de quête, par exemple. Je choisis d'associer le bouton Z à l'interrupteur "Détection = désactivé" (attention, le bouton Z correspond par défaut à la touche clavier D).
L'événement commun en détail Spoiler (cliquez pour afficher)
3 - Reste à créer l'interrupteur. Après un dialogue d'introduction du totem précisant que le bouton Z déclenche le détecteur, on définit les variables "X cible" et "Y cible" avec les coordonnées de notre cible sur la map (les coordonnées d'une case s'affichent tout en bas à droite quand on la sélectionne en mode éditeur), et on finit en activant l'interrupteur "Détection".
L'interrupteur du totem
Spoiler (cliquez pour afficher)
Et c'est parti, la chasse au trésor peut commencer ! Elle s'arrêtera avec la phase de dialogue de fin de quête qui désactivera l'interrupteur "Détection".
La fin de la quête
Spoiler (cliquez pour afficher)
La priorité d'affichage est fausse sur cette image, elle doit être au même niveau que le héros.
Si vous voulez que le héros détecte un objet enterré dans le sol (ce n'est pas le cas dans mon exemple puisque le puits empêche le héros de marché sur la coordonnée exacte de la cible), il suffit d'ajouter une animation supplémentaire centrée sur le héros, et d'ajouter une condition dans l'événement commun pour le cas où "X héros = X cible" et "Y héros = Y cible".
Version complexe (parce que mon scénario l'exige) :
Nouvelles règles :
Tout ça, c'est très bien, mais je veux faire durer le plaisir pour le joueur en le faisant chercher TROIS personnages dispersés sur toute la map, ce qui implique dans mon cas de traverser minimum 3 lieux et la World Map. En plus, je veux que ce soit au joueur d'entrer le nom de sa prochaine cible, et une des trois cibles ne sera pas trouvable car elle se trouve sur un autre continent, loin au Nord. Challenge accepted ?
Ce serait trop compliqué de passer par les événements communs pour les variables de cible qui changeront à chaque map (possible mais compliqué). On va faire plus simple et ajouter un événement en processus parallèle sur chaque map nécessaire. Perso, j'ai choisi de le faire sur toute les maps de mon île (6 + world map), mais si c'est trop pour vous, il n'y a qu'à le faire sur les maps concernées et mettre un texte "vous êtes trop loin du totem" qui s'enclenche avec l'interrupteur "Détection" sur les maps hors zone.
Dans cet exemple, je ne vais me servir que d'un interrupteur, et le changement de cible se transmettra aux variables par une variable, comme dans ce tuto de Joke.
Tout cela implique de changer un peu l'événement commun pour éviter une latence qui risque de déboussoler le détecteur (ça m'est arrivé, probablement à cause des 60 frames de la commande "attendre"). On supprime donc les deux variables "X héros" et "Y héros" d'ici pour les rajouter dans chaque événement où elles se calculeront en même temps que les variables "X cible" et "Y Cible" (détails plus bas dans l'image "L'événement de la cabane de bûcheron ").
Commençons cette fois par l'interrupteur. Pour lui intégrer cette fonction de recherche par nom, on s'inspire de la méthode des portes codées de Vyslanté. Il faut tout d'abord créer un héros (par exemple le 007) sans nom, puis ajouter la commande "Entrer un nom..." après la phrase d'intro "Qui veux-tu retrouver ? (entrer un nom en majuscule)".
Si le joueur cherche Pierre et tape le nom sans erreur, il validera la condition "le héros 007 a Pierre pour nom". Suite à quoi on reset le nom du héros avec la commande "Modifier le nom...", on enclenche l'interrupteur "Détection", et on passe la variable "Cible" sur 1. On répète l'opération pour les deux suivants en incrémentant la variable "Cible", et on termine avec la condition "si Détection reste désactivé" qui affiche un message d'erreur et reset le nom du héros 007.
Le détail de l'interrupteur
Spoiler (cliquez pour afficher)
L'interrupteur est prêt, l'événement commun aussi, l'animation ne change pas ; il ne reste plus qu'à semer des événements en processus parallèle. Ils devront contenir la définition des variables "X héros" et "Y héros" (identiques à ce qui se trouvait dans l'événement commun), ainsi qu'une condition par cible avec des coordonnées spécifiques à la map où on collera l'événement.
La World Map
Débutons par la map de la cabane de bûcheron ; selon ma World map, la cible 1 et 3 se trouvent au Nord et la cible 2 au Nord-Est. Pour que le détecteur pointe toujours au Nord, je fixe la variable "X cible" sur "X héros" et "Y cible" sur 0. Pour simuler la diagonale Nord-Est, je place les coordonnées de la cible 2 en 017,000, c'est-à-dire juste à l'extérieur de la map.
L'événement de la cabane de bûcheron
Spoiler (cliquez pour afficher)
Même principe pour la World Map et la Map cible 1. Pour simuler que Jacques est plus au Nord que ce que montre la map, je cale "X cible" sur "X héros" et "Y cible" sur 0.
Pour varier, la cible 2 sera mobile. Il suffit de créer un événement Gontran (parcours aléatoire ou défini, au choix) qui s'enclenche dès que la variable "cible" vaut 2, et caler les variables "X cible" et "Y cible" sur "[Gontran] carte X" et "[Gontran] carte Y" (même principe que l'image "Comment déterminer les variable de la position du héros" du point 2).
Gontran, le gosse aux cheveux verts, se fait traquer.
Ne pas oublier de mettre un interrupteur qui désactivera "Détection" une fois la cible trouvée (le placer sur la cible elle-même est une bonne idée). Par contre, pas besoin de reset la variable "Cible".
Merci de m'avoir lu, en espérant que ça serve à quelqu'un.
|