Oniromancie: Tutoriels - Gestion de la collision des projectiles


Comment ça marche?

Aëdemphia
Par Sylvanor

Fighting Robots Quest
Par Boulon

Forstale
Par Ødd Clock

Geex
Par roys

Inexistence
Par Falco

La Légende d'Ibabou
Par Zaitan

Lije
Par Gaetz

LoveMaster
Par Cuddlefox

Sarcia
Par Kaëlar

Super Mario RPG - Lost Souls
Par Omegabowser

Jeux: Monster World RPG / Jeux: Pif et Hercule / News: Mise à jour de RPG Maker 2003 / Tutos: Création de charset / Jeux: FAYLINAWA /

Chat  (67 connectés)

Bienvenue
visiteur !






publicité RPG Maker!

Statistiques

Liste des
membres


Contact

68 connectés actuellement

9257276 visiteurs
depuis l'ouverture

1403 visiteurs
aujourd'hui

Groupe Facebook

Barre de séparation

Partenaires




TOP
GAMEMAKING


Les 5 plus
visités

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Pixelandgame

Tashiroworld

HeyMakeGames

Au hasard

RMXP Forum

RPG Millenium

Le Temple de Valor

Les deux derniers

Lunae, le baz'arts d'Emz0

Le studio du chat vert

Nos autres partenaires

Devenir
partenaire


Barre de séparation

Un site du réseau
War Paradise

Annuaires référenceurs




Gestion de la collision des projectiles
Ecrit par trotter

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.

image

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

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

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

L'imbrication
image
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.
image

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

...

Pardon j'étais parti chercher un truc à bouffer. Vous avez tenu jusque là ? Bravo ! On continue avec la dernière partie :

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:

7D4E9;">
7D4E9;background-color:#565A6D">

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.

image

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 apprit grace à son tuto (plus en ligne malheureusement). Son tuto sur internet archive.
Mes excuses pour les kanjis qui s'affichent dans mon rpg maker.

L'évenement de tir complet :
image
image



MisChief - posté le 17/08/2008 à 23:56:44. (554 messages postés)

Elle est zolie hein?

Super tuto!
Et...

Citation:

Creez un ennemi, en lui collant l'apparence de votre petite soeur, patron, ou ce que vous voulez (j'ai mis mon ex)



Ton ex est une pieuvre? (cf. 1er screen) :fou

Vivement la fin de l'année


plab-maker - posté le 09/04/2009 à 19:36:24. (228 messages postés)

...

Moi ça marche pas! J'ai fait exactement comme tu as dit, et le projectile ne disparait pas, et l'ennemi ne perd pas de vie, pourtant, j'ai fait exactement TOUT ce qu'il y avait marqué sur la fiche de l'évènement de tir complet!!!!!

Don't listen too much to a music you love. You might end up hating it


Dunkel - posté le 16/05/2009 à 17:44:40. (3031 messages postés)

Wahnsinn.

Bah tu te relis au lieu de t'exciter.

J'ai fait grosso modo la même chose que ce tuto pour mon jeu, et ça marche, et en regardant le tuto par la même, ça a l'air de marcher aussi.


XGuarden - posté le 26/12/2011 à 07:55:05. (66 messages postés)

Au risque de reiveiller un vieux post...
Il y a une erreur dans ton code:
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.

Selon cette logique, si le projectile ne bouge pas en diagonale, ça ne fonctionnera jamais.


trotter - posté le 16/01/2012 à 20:39:38. (7995 messages postés)

Pas compris ton problème.
Ca signifie juste "Si la position précédente du projectile (X et Y) est égale à l'actuelle (OldX et OldY), c'est qu'il n'a pas bougé", donc on peut le supprimer.

Ca fonctionnera donc quand le projectile est immobile.

Un jeu sur la liberté d'action


Emilio-Kodjo - posté le 07/11/2012 à 14:53:34. (1 messages postés)

Moi je sais pas ce qui se passe mais le projectile pars toujours vers le bas quelle que soit la direction du heros :triste2 Quelqu'un sait ce qui se passe ?

PS : Qui est le naze qui a traduit "Appui d'une touche" par "Enter password" en version anglaise ??? J'ai passé 3 heures a trouver le bon bouton :D

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe

Plan du site:

Activité: Accueil | News | Forum | Flash-news | Chat | Commentaires | Galerie | Screen de la semaine | Sorties | Articles perso | Livre d'or | Recherche
Jeux: Index jeux séparés | Top Classiques | Top Originaux | Les autres | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Jeux complets | Proposer
Rubriques: Le Wiki | Collection Oniro | Tutoriaux | Scripts | Guides | Gaming-Live | Tests | Making-of | Interviews | Articles perso | OST | L'Annuaire | Divers | Palmarès
Hébergés: Aëdemphia | Fighting Robots Quest | Forstale | Geex | Inexistence | La Légende d'Ibabou | Lije | LoveMaster | Sarcia | Super Mario RPG - Lost Souls
Ressources: Jeux | Programmes | Packs de ressources | Midis | Eléments séparés | Sprites
RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis