❤ 0 Le principe est simple :
On téléporte le projectile sur le héros, on le fait se déplacer à grande vitesse dans la direction voulue.
A chaque frame, on vérifie si il a bougé.
S'il n'a pas bougé, c'est qu'il a rencontré un obstacle. On récupére ses coordonnés, et on les compare avec les coordonnés de ce qu'on veut qu'il touche.
************************
1)Commencez par créer un évènement Projectile.
Donnez lui l'apparence d'une boule de feu, de chevrotine ou de ce que vous voulez. Même niveau que le héros.
C'est lui qui va se déplacer vers l'ennemi.
2)Creez un ennemi, en lui collant l'apparence de votre petite soeur, patron, ou ce que vous voulez (j'ai mis mon ex).
3)Creez un evenement parallèle "Attentetir". C'est lui qui va attendre l'appui d'une touche et téléporter le projectile devant le héros.
Selectionnez "Attendre l'appui d'une touche", avec la touche de décision, par exemple.
4)Récuperez les coordonnés X,Y du héros dans deux variables (posXheros et posYheros).
(Modifier variables=>Rendre égal=>Evenement coordonné X. du héros, même chose pour Y)
Ci-dessous l'evenement attentetir dans son intégralité.
5)Téléportez le projectile sur le héros=>Modifier la position d'un evenement d'après les deux variables posXheros et posYheros.
6)Recuperez dans une nouvelle variable (nommons-la Directionheros) la direction vers laquelle regarde le héros, pour savoir vers où le projectile doit se déplacer (Modifier variable=>Rendre égal à évènement=>Direction du héros).
7)Enfin, activez un interrupteur pour signaler qu'un tir est en cours.
8)Faites une nouvelle page vide sur l'evenement Attentetir, qui s'active lorsque l'interrupteur signalant un tir en cours est activé.
A ce stade, en appuyant sur la touche d'action, le projectile devrait se superposer au héros. Super !
Il faut maintenant le faire bouger dans la bonne direction.
Partie 2 : Faire avancer le projectile
Dans l'évenement du projectile, en processus parallèle, lorsque le bouton signalant un tir est activé, on va demander que si le héros regarde à droite, le tir avance d'un pas vers la droite.
1)Dans conditions de l'evenement, mettez le bouton signalant un tir, et mettez l'évènement en processus parallèle pour qu'il s'execute en boucle sans géner personne.
2)Ajoutez une condition : Si le nombre contenu dans la variable "Directionheros" est égal à 6 (chiffre correspondant à droite), Déplacer/modifier l'évenement le projectile avance de un pas vers la droite.
Testez. Hourra, la boule se déplace vers la droite quand vous regardez à droite. Mettez l'évenement en très rapide pour qu'elle aille un peu plus vite, sinon ça risque de nous poser des problèmes pour la suite.
3)Faites la même chose pour la gauche (directionheros=4), le haut (directionheros=8), et le bas (2).
Partie 3 : Faire disparaitre le projectile
Maintenant, nous allons faire en sorte que le projectile disparaisse s'il est immobile. Pour cela, nous allons comparer deux paires de variables : ses coordonnés XY avec ses coordonnés XY d'un dixieme de seconde plus tard. Si elles sont égales, le projectile a été bloqué et doit disparaitre.
1)Modifiez une nouvelle variable (posXtir) pour qu'elle corresponde à la coordonné X de l'évenement projectile. Même chose pour Y.
2)Au dessus de ces deux commandes, modifiez une nouvelle variables oldposXtir, qui sera égal à posXtir. Même chose pour Y. Attendez 0.1 seconde.
Qu'est ce qu'on a fait ? Toutes les dixièmes de seconde, la variable posXtir se met à jour avec la position de l'évenement, tandis que la variable oldposXtir se rappelle de la position de l'évenement 0.1 secondes plus tôt.
Il ne reste plus qu'a comparer ces deux variables pour determiner si l'évenement a bougé durant ces 0.1 secondes. Si il n'a pas bougé, on considère qu'il a rencontré un obstacle.
3)Faites une condition : si OldposXtir est égal à posXtir...puis une autre, à l'interieur de celle-ci : si OldposYtir est égal à posYtir...Alors, le bouton tir est désactivé, détruisant le projectile, et autorisant à tirer de nouveau.
si OldposXtir est égal à posXtir...
L'imbrication
Testez, ca devrait marcher.
Mais le tir peut sortir de l'écran. Si vous voulez éviter ça, récupérez la position du tir dans une nouvelle paire de variables, mettons tirecranY et tirecranX, de façon relative à l'écran.
Ensuite, mettez des condtions : si tirecranX est superieur à 320 (taille de l'écran) désactivez le bouton de tir. Si il est inferieur à 0, même chose. Pour Y, pareil.
Partie 4 :Toucher les méchants
Toujours le même principe : Quand le projectile est bloqué par quelque chose, on récupère les coordonnés du méchant, on les compare à celle du projectile. Si ce sont les mêmes, bingo, le méchant meurt.
Citation: Mais...Attendez une minute, comment les coordonnés du projectile vont pouvoir être égales à celles des méchants, puisque le projectile sera bloqué par les méchants ? |
Bonne question jeune coccinelle ! Il suffit de tricher en ajoutant 1 vers la droite si le projectile se déplace vers la droite, 1 vers la gauche si le projectile se déplace vers la gauche etc..
1)Creez encore une nouvelle paire de variable : directionXtir, directionYtir, que vous assignez au tout début, lorsqu'on décide dans quel sens va le projectile.
Si le projectile va à droite, on assigne +1 à directionXtir et on remet directionYtir à zéro, tant qu'on y est. Si le projectile va à gauche, on assigne -1. Vers le haut, directionYtir=-1. Vers le bas, directionYtir=+1.
2)Juste au dessus de la commande où vous eteignez l'interrupteur, c'est a dire quand vous comparez OldposYtir et posYtir, creez une nouvelle paire de variable (posXennemi et posYennemi), où on va stocker les coordonés de l'ennemi (modifier variable=>coordonné X de l'évènement=>ennemi).
Même chose pour Y.
On va maintenant additionner directionXtir à posXtir (et directionYtir à posYtir).
3)Modifier variables=>Additionner directionXtir à PosXtir.
Modifier variables=>Additionner directionYtir à PosYtir.
4)Enfin, comparez votre directionXtir à posXennemi et directionYtir à posYennemi. Et là, flasher l'ennemi, affichez une animation de combat, mettez le message "aie", ce que vous voulez.
Voila, c'est terminé !
Merci à Carole Boucher, qui m'a tout appris grâce à son tuto (plus en ligne malheureusement). Son tuto sur internet archive.
Mes excuses pour les kanjis qui s'affichent dans mon rpg maker.
L'événement de tir complet :
|