Tutoriaux événements
Lancer un projectile
- Tutorial rédigé par Bahamut 1.2.
- Aucune démo n'est disponible pour ce tutorial.
- Note des visiteurs : 9.88/10 (34 votes).










Je vais ici vous apprendre à envoyer un projectile qui part du héros et se dirige vers le haut de l'ecran, en événements.
On va commencer par le plus facile, créons un événement qui nous servira de projectile. Cette événement doit se situer sur la map de laquelle on peut lancer le projectile. En effet comprenez bien qu'on ne peut pas créer un événement pendant le jeu, il faut le faire avant. Faites donc votre événement sur la map, avec l'apparence d'un rocher par exemple. Je sais ce que vous pensez, on va se demander ce qu'un rocher fous là...Alors vous avez deux solutions, soit vous le planquez, ou bien vous lui donnez une opacité de 0. Il sera alors présent, mais invisible, et on aura juste à le rendre visible quand on voudra. Génial non ? :)
Et derniere chose, cochez les cases "audessus de tout" et "traversable", comme ça le projectile pourra traverser le decors sans probleme de collisions.
C'est bon, votre rocher est fait ? On ne mets rien dedans et on fait "ok", et voilà la premiere phase est terminée. Bon c'est là que ça commence vraiment : Créez un deuxieme événement, en processus parallele. Cette événement n'a pas à être un événement commun. En effet, vous pvouez faire un événement "normal", qui ne s'exécutera donc que sur la map actuelle, puisque de toute manière il nous faut l'événement du projectile. Bref, ne vous souciez pas de ça, créez un événement qui va nous permettre de lancer le projectile, mettez le invisible et n'importe où sur la map (enfin essayez de le mettre à un endroit où vous le retrouverez !).
Voilà ce qu'on va faire : Quand le joueur appuie sur une touche, par exemple la touche C, qui est en fait la touche action (on peut avoir le meme resultat en appuyant sur C, entrée et la barre d'esapce), l'evenement du projectile se "téléporte" sur la meme cas que le héros et se dirige vers le haut de l'ecran. On va donc commencer par déplacer l'evenement sur la case du héros quand on appuie sur C.
Il faut alors commencer par une condition. Il y a une condition nommée "si le joueur appuie sur la touche...", cependant ce n'est pas celle là que l'on va utiliser. On va faire ça en 2 étapes (vous allez voir ce n'est pas tres compliqué^^).
Commencez par insérez la commande "Gestion de l'appuie sur une touche", et choisissez une variable que vous appelerez par exemple "touche appuyée". Comment ça marche ? C'est simple, grace à cette commande chaque touche appuyée renvoie une valeur chiffrée différente, qui est alors stockée dans la variable sélécctionnée. Concrètement, la touche "action" (les touches C, entrée et espace), est associée au nombre 13. Ainsi lorsque le joueur appuiera sur une de ces touches la variable "touche appuyée" deviendra automatiquement égale à 13. Et maintenant, il suffit de faire une condition, dont les commandes ne s'exécuteront que si cette variable vaut 13 ! Alors allez-y, créez une condition qui serait "si la variable 'touche appuyée' = 13", et décochez la case "exécuter d'autres actions si la condition n'est pas rencontrée", car si le joueur n'appuie pas sur la touche "action" (ce qui est tout de meme le cas la majorité du temps^^), il n'y a aucune action à ecffectuer !
La premiere chose à faire et de remttre à zéro la variable "touche appuyée". En fait ce n'est pas nécessairement la premiere chose à faire mais sachez qu'il faut le faire à un moment où un autre, donc autant s'en débarasser maintenant. Si on ne la remet pas à 0, une fois toutes les commandes lues, le jeu va recommencer à lire l'evénement du debut. Si le joueur n'a pas touché à son clavier entre temps, la variable sera toujours egale à 13 ! Attention cependant, vous remarquez que la condition, si on remet la variable à 0, n'est plus remplie. Mais ne vous inquiétez pas, le jeu va continuez de la lire jusqu'au bout, c'est juste qu'il ne le fera pas deux fois (c'est bien ce qu'on cherche !).
Maintenant c'est parti, qu'est-ce qu'on veut faire déjà ? Ah oui mettre l'evenement sur la meme case que le héros ! Cependant le héros se deplace, il n'est pas toujours sur la meme case...Sa position change...elle varie ! Oui vous avez compris (ou pas^^), on va utiliser des variables. Oui, des variables, car pour repérez la position d'un élément, en n'importe quel langage de programmation, on a besoin de 2 variables (3 pour de la 3D !!). Si vous avez dépassé la sixième, vous savez qu'en maths, dans un plan on utilise des coordonnées, X pour l'abscisse (horizontalement) et Y pour l'ordonnée (verticalement) pour repérer la position d'un point. La c'est pareil, notre héros a une coordonnée X, et une coordonnée Y. Ces coordonnée sont donc deux chiffres différents (la plupart du temps), qu'on va récupérer dans deux variables (l'interface de RPG Maker ne permet pas de les utiliser directement...). Utilisez donc la commande "gestion des variables", et créer deux variables que vous appellerez par exemple X_heros et Y_heros, égales respectivement aux coordonnées X et Y du héros.

Le plus dur est fait ! Passons maintenant à la "téléportation" de l'evenement représentant le projectile. En page 2 des commandes d'evenement vous trouverez la commande "modifier la position d'un événement". Contrairement à "deplacer/modifier un événement", cette commande permet de changer instantannément la position d'un evenement. Et ça tombe bien, c'est ce qu'on cherche à faire ! Si vous cliquez sur cette commande, une sublime fenetre s'ouvre, il ne vous reste plus qu'à definir les nouvelles coordonnées de l'evenement "projectile" (ne l'aissez pas "cet événement" !!), grâce aux variables X_heros et Y_heros. Evidemment on fait en sorte que le X soit la variable X_heros et idem pour le Y ! Ouf, notre projectile est pret à etre lancé. Mais n'oublions pas qu'il est pour l'instant invisible (opacité de zero), Cette fois on utilise la commande "deplacer/modifier événement", et on mets simplement l'opacité de projectile (encore une fois, n'oubliez pas de bien choisir l'événement "projectile") au maximum, à savoir 255.
Il ne reste plus qu'à lancer notre rocher ! On a dit qu'il allait se diriger vers le haut de l'ecran, et tout droit (oui sinon ça fait bizarre Oo). Mais là un probleme se pose, il doit monter de combien de cases ? Jusqu'en haut de l'ecran, oui mais combien de cases ? Impossible à savoir hein ? En fait si (bah oui sinon ce tuto n'aurait pas d'intéret !). On va devoir faire une boucle. N'ayez pas peur, ce n'est pas danjereux :p. Un peu d'explication sur les boucles...le principe est extrêment simple, toutes les commandes que vous mettez dans une boucle vont se répéter, se répéter, encore et encore, voire même à l'infini (si c'est la cas votre jeu va se bloquer !). L'intérêt vient du fait qu'on peut sortir de cette boucle, à un moment bien précis, autrement dit répéter une action jusqu'à un certain moment....par exemple jusqu'à ce qu'un certain projectile arrive en haut de l'ecran. Si ce n'est pas encore fait, vous allez vite comprendre (j'espere^^). Créons donc une boucle (premiere page), vous voyez que notre boucle a un debut et une fin, vous trouverez ca logique si vous avez compris le principe : une fois la derniere commande de la boucle lue, on revient au debut, sans lire ce qui se trouve apres la fin de la boucle.
Dans cette boucle on va deplacer le projectile vers le haut. La commande à utiliser est bien sur "deplacer/modifier evenement", et on lui demande poliement de faire un "pas" vers le haut. Oui, un seul, n'oubliez pas qu'on est dans une boucle , ce sera répété...enfin jusqu'à ce qu'on arrive en haut de l'ecran ! Comment faire alors ? Il va falloir utiliser la position Y de notre projectile, pour qu'une fois à 0 (c'est à dire le haut de l'ecran), on sorte de la boucle.
Alors c'est maintenant qu'il va falloir se concentrer (c'est pas non plus inhumain de comprendre ce qui va suivre mais bon). On va d'abord se demander à quoi est egale la position Y du projectile. On pourrait parfaitement faire comme pour le héros, créer une variable et tout le tintouin. Mais si vous réfléchissez bien, on a dejà les coordonnées du point de départ du projectile ! Eh bien oui, les coordonnées du héros, qui sont toujours dans les variables X_heros et Y_heros. Seule cette derniere nous intéresse, on va donc la réutiliser ! Evidemment ça se complique car désormais Y_héros designe la coordonnée du projectile et non plus du heros ! Ca aurait été bête de faire une nouvelle variable, donc comprenez bien comme ça, c'est en fait plus simple ! Et ne vous inquiétez pas, la variable Y_heros est toujours égale à la meme chose que tout à l'heure meme si le heros s'est deplacé, car on n'a utilisé qu'une fois la commande la rendant egale à la coordonnée Y du héros. Bref, on va maintenant s'en servir.
Apres chaque "pas" vers le haut, on enlève 1 à cette variable. En effet, je rappelle que toutes les cases du haut de l'ecran ont pour coordonnée Y zéro, donc si on s'en rapproche d'un case, on diminue le Y de 1. Que ce soit clair, on aurait aussi pu, encore une fois, refaire comme pour le héros et donner à cette variable la valeur de la coordonnée de l'evenement projectile. En fait c'est comme vous voulez, moi je trouve ça plus clair d'enlever 1 à chaque deplacement, et je pense que c'est plus rapide au niveau du jeu : en effet, ça semble plus simple pour un ordinateur de faire "-1" que de vérifier constament la position du projectile. Par conrte, on mets d'abord un "deplacer tout", sinon le logiciel ne va pas attendre que l'evenement se soit deplacé avec d'enlever 1, et finalement la variable va tres vite arriver à 0...plus tot que prévu. Je rappelle que sans le "deplacer tout", si vous mettez un deplacement les commandes vont etre lues tout de suite, sans attendre que le deplacement soit fini. Au passage, s'il y a d'autres evenements sur votre map, ca peut poser probleme car votre projectile sera bloqué jusqu'à ce que tous les evenements de la map aient fini leurs deplacement ! Ca y est, vous avez ajouté ces deux commandes ?
Revenons à nos moutons. Il faut maintenant verifier, à chaque pas, si le projectile ne se trouve pas en haut de l'ecran, autrement dit si son Y ne vaut pas zero. Et si c'est le cas, on le rend invisible pour l'utiliser ultérieurement. Mais avant il faut deja sortir de la boucle.
Il suffit de créer une condition "si Y_heros = 0" (je rappelle que Y_heros designe maintenant la position Y du projectile), toujours sans le "exécuter d'autres commandes si....". A l'intérieur on se contente de mettre la commande permettant de sortir de la boucle, qui s'appelle....."Sortir de la boucle" (oui, c'est dingue !^^).
On va maintenant travailler hors de la boucle, donc apres le "fin" de la condition, et la "fin de boucle". On mets la tout ce qui va se passer une fois l'evenement arrivé en haut de l'ecran. Pas grand chose en fait. On va simplement remettre son opacité à 0, histoire de le planquer à nouveau. Voilà, notre événement est fini, vous pouvez tester, ça devrait fonctionner ! Pour ceux uqi ont du mal, voilà à quoi ça ressemble à la fin :

Je ne vous cacherai pas que tout ça peut etre largement amélioré. Par exemple si vous voulez executer une action au contact entre le boulet et un autre evenement...Mais c'est tout pour aujourd'hui !
Noter ce tutorial sur 10 :