Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

News: / Annonces du mois d'octobre / Jeux: Happiness Adventure / Jeux: Digital Shadow / Sorties: [RMVXACE] Digital Shadow - (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

115 connectés actuellement

11963998 visiteurs
depuis l'ouverture

8 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Hellsoft

Planète Glutko

Alex d'Or

ConsoleFun

Level Up!

RPG Maker Détente

Tous nos partenaires

Devenir
partenaire



Gestion de la collision des projectiles

Comment envoyer un projectile et détecter lorsqu'il entre en collision avec quelque chose.

Ecrit par trotter le 21/03/2008


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

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



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.

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



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

❤ 0

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)

❤ 0

...

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)

❤ 0

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)

❤ 0

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 (9622 messages postés)

❤ 0

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.


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

❤ 0

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 - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers