Day.png);">
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

Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Jeux: Ce qui vit Dessous / News: Quoi de neuf sur Oniromancie (...) / Sorties: Dread Mac Farlane - episode 6 / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

284 connectés actuellement

29366748 visiteurs
depuis l'ouverture

1003191 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

ConsoleFun

RPG Fusion

Eclipso

Tous nos partenaires

Devenir
partenaire



Course d'obstacle en deux événements

La méthode en un seul événement (trouvée plus tard que cette méthode-ci) est bien plus pratique, mais c'est toujours bon de savoir les diverses façons de faire une chose.

Ecrit par Joke le 23/06/2008


❤ 0

Ce tutoriel est utilisable pour tous les RPG maker !! (2000, 2003, XP, VX)

Le mini-jeu de base par excellence !

Tu te déplace continuellement dans une direction et tu dois esquiver les obstacles du décore qui viennent vers toi.

Il y a mille façon de programmer ce genre de mini jeu !

Mais je pense que celle-ci est la plus simple, utile et instructive !

Je vais vous expliquer pour le cas ou votre personnage se déplace vers le haut, et doit se déplacer de gauche à droite pour éviter les obstacles.

Si vous avez bien compris ce tutoriel, essayez donc de faire que le personnage se déplace plutôt continuellement vers la droite et doit esquiver les obstacles par haut et bas.

Tout d'abord, examinons ce que l'on souhaite faire !

-Le héros se déplace tout le temps vers le haut
-Quand on appuie sur haut et bas, il ne se passe rien
-Quand on appuie sur gauche, il va se déplacer sur la gauche, mais comme il se déplace en même temps vers le haut, il va se déplacer en diagonal haut/gauche
-Quand on appuie sur droite, il va alors se déplacer en diagonal haut/droite

Mais quand on déplace notre héros, d'habitude, il bouge que lorsqu'on appuie sur les touche, et dans les quatre directions, pas de cette façon là !?

Alors il faut bloquer le contrôle du héros et programmer une nouvelle façon de le contrôler, non ?

Comment faire ?? Vous savez comment faire, bien sûr !^^
...Non ?

Ce qui bloque le contrôle du héros, c'est un événement en mode "Automatique", contrairement au processus parallèle qui lui ne bloque pas le contrôle du héros.

Alors on va créer un premier événement "Contrôle" en mode auto... Ah non, parallèle !

PoUrQuOi ???!!!
Ben on aurait un bug de RPGmaker sinon, tel que je vais vous le programmer !
On a deux besoin que de deux événements pour ce mini-jeu, un pour le contrôle du héros, le second pour les collisions et la ligne d'arrivée, et RPGmaker est très méchant, on est obligé, si on fait une téléportation, que la téléportation soit à l'intérieur de l'événement en mode automatique !
Et là, la téléportation ne sera pas dans le premier événement "contrôle" mais dans l'autre événement "collision".
Donc on aura l'événement "contrôle" en processus parallèle
Et l'événement "collision" en mode automatique !

Processus parallèle, automatique ? Tu pige pas ?
Oh mince !! Un gros débutant est en train de me lire !!
Ben quand tu créé un événement, tu peux choisir à côté de son apparence, la "condition de déclenchement", et là tu peux choisir entre "presser une touche, au contact du héros, contact événement/héros, démarrage automatique et processus parallèle" ! Ah ben tu vois que t'es pas un gros débutant !

Alors je répète, on a le premier événement "contrôle" en processus parallèle qui permet de diriger notre héros comme on l'a décrit, puis le second événement "collision" qui servira à savoir si le héros s'est mangé un mur, ou s'il arrive sur la ligne d'arrivée ! Je vous explique ça plus tard on commence d'abord par ce premier événement...

Le parcours
Le héros se déplace vers le haut, vous allez mapper votre long parcours sur une carte bien longue en hauteur (exemple : 25x200)
Faite les obstacles que vous voulez ! Pour l'instant ne vous cassez pas la tête, deux trois obstacles le temps vous programmiez le système !
Une fois que vous aurez fini votre programmation, veillez à ce que votre parcours soit franchissable image Pas de déviations en coude mais en diagonal ! image

L'événement "Contrôle"
Est transparent, en mode processus parallèle, et vous l'appellez "Contrôle"
A l'intérieur on va programmer en sorte que le héros se déplace tout le temps vers le haut, et qu'on peut se déplacer en diagonal haut/gauche et diagonal haut/droite avec les touches gauches et droites.

On commence : se déplacer continuellement vers le haut :

déplacer modifier événement : "héros" pas vers le haut
>>>"ignorer si impossible" coché, "Répéter commande" décoché"

Attendre 0.1sec


OUAH TROP BALEZE T'ES UN DIEU DE LA PROGRAMMATION, JOKE !!!

Ha ha, je sais, je suis si puissant ! Quelle idée ingénieuse !

...faire "déplacer héros" "pas vers le haut" !

Ben ouais jusque là c'est pas compliqué, comme c'est un événement en processus parallèle, ce qu'il y a de programmé à l'intérieur va tourner en boucle, donc pas besoin de cocher "répéter commande" dans la commande, car cette commande va se répéter toute les 0.1secondes !

On ajoute : Se déplacer sur la gauche et sur la droite !

déplacer modifier événement : "héros" pas vers le haut
>>>"ignorer si impossible" coché, "Répéter commande" décoché"

demander l'appui d'une touche : variable "touche"

>>> tu choisis une variable que tu auras nommé "touche", tu coche : Touche gauche (2) et Touche droite (3) et tu décoche "attendre jusqu'à ce qu'une touche soit pressée"(important !!)

condition : si variable "touche" est égal à 2 :
<>Déplacer modifier événement : "héros" : "pas vers haut/gauche","pas vers haut","pas vers gauche"

>>> "ignorer si impossible" coché, "répéter commande" décoché

condition : si variable "touche" est égal à 3 :
<>Déplacer modifier événement : "héros" : "pas vers haut/droite","pas vers haut","pas vers droite"

>>> "ignorer si impossible" coché, "répéter commande" décoché

Attendre 0.1sec


L'événement "collision" est terminé !
Déjà ??
Tu veux programmer quoi de plus ? C'est parfait comme ça !^^
Quoi ? Pourquoi j'ai fais "haut/gauche","haut" puis "gauche" au lieu de simplement "haut/gauche" ?

Hé oui c'est intelligent, je vais m'expliquer :
Chaque déplacements ont "ignorer si impossible" de coché, donc si on appuie sur la gauche, il y a un déplacement donc le tout premier déplacement "déplacer vers le haut" est annulé par cet autre déplacement.
Cet autre déplacement (pour la touche gauche) c'est "haut/gauche","haut","gauche".
Ca veut dire que si c'est impossible de se diriger vers "haut/gauche" (dans le cas ou tu appuie sur la gauche alors que ton héros est bloqué contre un mur à sa gauche, il pourrait pas) alors "haut/gauche" serait annulé et prendrait place à "haut", et si "haut" est bloqué (genre tu es contre un mur qui est devant toi, haut/gauche est impossible, haut est impossible) tu pourras alors te déplacer sur la gauche.
Tu n'auras pas le temps de te déplacer sur la gauche car tu te seras mangé le mur, mais qui sait, grâce à ça tu esquivera le mur vraiment de justesse !

Si on n'avait mis que "déplacer : haut/gauche", et qu'on se déplacerait contre un mur, le héros se serait arrêté ! Pas bon ! Donc là c'est parfait.

Pourquoi, quand tu as aucun obstacle sur ta gauche, ça fait pas un déplacement chelou "haut/gauche, haut, gauche" mais ton perso se déplace bien continuellement vers haut/gauche" ? Toujours grace à la case "ignorer si impossible", quand on laisse appuyé gauche, ça te fait le déplacement "haut/gauche, haut, gauche" tout les 0.1 secondes ! donc à chaque fois il s'annule lui même et seul le premier déplacement est pris en compte !

Tant de blabla pour trois lignes de programmation ! Mais au moins vous avez pigé, et OH MY GODE, le déplacement est fluide et perfect^^


L'événement "Collision"
Est transparent, en mode automatique, et vous l'appellez "Contrôle"
Ouiii ! Pour que le héros se mange les murs je vais devoir tapisser plein d'événement en mode "sous le héros" "contact événement/héros" avec le game-over dedans !!!!!

OUH LE NULEUUH !! Il sépoprogramméé !

Non surtout pas de tapissage, pas d'événement en mode "touché par le héros", de toute façon, ça ne marcherait même pas !
Pourquoi ? Parce que ces événements se déclenchent si tu te déplace toi-même dessus, mais si c'est un autre événement qui va te faire déplacer dessus, pas tes touches directionnelles, ça ne marche pas !

Hé hé c'est là que la programmation est intelligente, ce petit événement en mode automatique vous permettra de détecter à chaque fois que le héros est bloqué contre quelque chose !

Déjà je vous rappelle pourquoi il est en mode automatique : Le mode automatique bloque les déplacements du héros, donc c'est important de bloquer les déplacements normaux pour que l'événement "contrôle" fonctionne correctement.

Pour commencer, on réfléchis !

Quelle idée !! Il faut réfléchir pour programmer un truc ? Ah ouais pas mal !!

Si le héros rencontre un obstacle, que va-t-il se passer ?
> CRASHBOUMBLAAAAM Game Over.
Euh oui... mais avant ça, avant ça !

Tu sèche ? Cherche c'est quoi la différence entre lorsque le héros se mange pas d'obstacle, et quand il s'en mange un..
...Ben s'il se mange un obstacle, il se déplace plus !! Tu vois que t'es pas con !

Alors il faudrait programmer quelque chose qui capte quand est-ce que le héros ne se déplace plus !

Il se déplace vers le haut, qu'est ce qui change quand il se déplace qui ne change plus lorsqu'il ne se déplace plus ?
Sa position ? Ha ha ha t'as rien d'autre à me dire ?
Bien sûr que t'as rien d'autre à me dire ! C'est bien ça : la position verticale va changer si le héros se déplace, s'il ne se déplace plus elle ne changera plus.

Peut on avoir la position verticale du héros dans RPGmaker ?
Ben ouais, c'est sa position Y, on peut la stocker dans une variable !
On peut donc faire "modifier variable "Y héros"" rendre égal à événement : coordonnée Y du héros.

Tu as coordonnée Y et Y écran, tiens, pourquoi on utilise pas Y écran ??
Y écran c'est la position du héros sur l'écran, et tu remarquera que pendant la course, ton perso sera toujours au milieu de l'écran ! Donc la coordonnée Y écran elle en changera pas, c'est pas utile de l'utiliser, on utilise alors la coordonnée Y normale qui est la position verticale du héros par rapport à la carte !

On sait comment prendre la coordonnée Y du héros, mais comment fait-on pour savoir si elle arrête de changer, ou si elle continue de changer ?

Ben 0.2 secondes c'est pas suffisant au héros pour changer de position en pleine course ? S'il se déplace rapidement même 0.1 seconde c'est suffisant, que la position Y change normalement toute les 0.1 secondes !

Donc si le héros ne se déplace plus, sa position Y a cessé de changer toute les 0.2 seconde ! Donc avant 0.2 sec la variable devient pareil qu'après 0.2 sec !

Il faut donc un témoin qui se souvienne de combien valait la variable "Héros Y" avant que s'écoule 0.2secondes, on va donc utiliser une deuxième variable : "Héros Y ancien"

Aaah, vous commencez à cerner l'idée, je vois cette petite lueur de malice dans vos yeux, oui c'est tout simple hein ?

Voilà le code ! :

Modifier variable : "Héros Y ancien" rendre égal à événement : position Y du héros
Attendre 0.2sec
Modifier variable : "Héros Y" rendre égal à événement : position Y du héros
Condition : si variable "Héros Y" est égal à variable "Héros Y ancien"
<>KRASHBOUBADABOUM, téléporter l'équipe : début de la course !


Hé bé, tout ce blabla pour un si petit code !!
Je vous l'avez dis, c'est la manière la plus simple de programmer un tel mini jeu ! T'as pas plus propre !!

La condition sert à savoir si la position Y est resté la même ou pas pendant ces 0.2sec, si elle est restée la même, c'est que le héros est bloqué, c'est qu'il a rencontré un obstacle, c'est que... KRASHBOUBADABOUM !!

Voilà tu as programmé le contrôle du héros, les collisions du héros... c'est génial et magique !!
...Il manquerait pas un petit quelque chose ?

Une fin à cette course, peut-être ? ^^"
Laisse faire le dieu !! Je vais faire une ligne d'événements en mode "contact événement/héros" avec ce qu'il faut dedans !!!! Hi Hi !!
Non mais il est pas bien, lui ! Avec sa mémoire de poisson rouge !!
J'ai dis que ces événements ne marchaient pas !!

Comment faire alors ?
Tu vois où tu as placé ta ligne d'arrivée ? Mets ton curseur dessus, dans RPGmaker !
Dans la barre grise en bas de RPGmaker tu as le nom de la carte, et deux nombres entre parenthèses ! C'est la position X et Y de l'endroit où tu as mis ton curseur, sur ta carte.

Tu peux alors lire la position Y, deuxième nombre, de ta ligne d'arrivée.

Par exemple tu lis "005" ? Parfait ! On va ajouter ça dans notre événement "collision" alors ! Ben ouais, pas la peine de créer un troisième événement, gros naze, surtout que s'il y a téléportation, il faut la faire dans l'événement automatique sinon BUG, plantage !

Modifier variable : "Héros Y ancien" rendre égal à événement : position Y du héros
Attendre 0.2sec
Modifier variable : "Héros Y" rendre égal à événement : position Y du héros
Condition : si variable "Héros Y" est égal à variable "Héros Y ancien"
<>activer interrupteur "crash"
<>KRASHBOUBADABOUM
<>téléporter l'équipe : début de la course
Condition : si variable "Héros Y" est inférieur ou égal à "5"
<>YOU WIN, bravo poulet !!!
<>téléporter l'équipe : Fin de la course


Ben voilà, si la position Y du héros devient inférieure ou égale à 5, c'est que le héros touche ou dépasse la ligne d'arrivée ! =)

J'ai ajouté "activer interrupteur : "crash"" dans la condition de collision ! Pourquoi donc ?

Quand tu te crash, l'événement de déplacement fonctionne toujours ! Alors pendant le crash, tu peux toujours déplacer ton héros et continuer la course si tu n'active pas cet interrupteur !
Alors dans le premier événement "contrôle", vous allez ajouter une seconde page vierge, en mode "appui touche" avec comme condition de déclenchement en haut à gauche de l'événement : l'interrupteur "crash"

Cela aura pour effet de désactiver le contrôle du héros pendant le crash !

Attention : Du coup, lorsque vous commencez la course, il faut que cet interrupteur soit désactivé, désactivez le au commencement de la course !

En plus ça vous permet de faire une intro à votre course genre "activer interrupteur "crash""
"3,2,1, partez"
"Désactiver interrupteur "crash"
Vous pouvez même le mettre dans votre événement "collision", ça, suivit d'une boucle pour ne pas que ça se répète, cet intro !

RÉCAPITULATIF :
Quelques changements ont été apportés pour justement intégrer cet intro. On oublie l'interrupteur "crash" et on utilise plutôt l'interrupteur "course activee" :

Premier événement "Contrôle" :
En mode processus parallèle, interrupteur déclencheur : "course activee", bien plus pratique !

déplacer modifier événement : "héros" pas vers le haut
>>>"ignorer si impossible" coché, "Répéter commande" décoché"

demander l'appui d'une touche : variable "touche"

>>> tu choisis une variable que tu auras nommé "touche", tu coche : Touche gauche (2) et Touche droite (3) et tu décoche "attendre jusqu'à ce qu'une touche soit pressée"(important !!)

condition : si variable "touche" est égal à 2 :
<>Déplacer modifier événement : "héros" : "pas vers haut/gauche","pas vers haut","pas vers gauche"

>>> "ignorer si impossible" coché, "répéter commande" décoché

condition : si variable "touche" est égal à 3 :
<>Déplacer modifier événement : "héros" : "pas vers haut/droite","pas vers haut","pas vers droite"

>>> "ignorer si impossible" coché, "répéter commande" décoché

Attendre 0.1sec


Second événement "Collision" :
En mode automatique, aucun interrupteur déclencheur :

message : Attention, soyez prêt pour la course d'obstacles !
message : 3..
message : 2..
message : Pouet...
message : PARTOOOOCHE !!!!

activer interrupteur : "course activee"

BOUCLE :
Modifier variable : "Héros Y ancien" rendre égal à événement : position Y du héros
Attendre 0.2sec
Modifier variable : "Héros Y" rendre égal à événement : position Y du héros
Condition : si variable "Héros Y" est égal à variable "Héros Y ancien"
<>
désactiver interrupteur "course activee"
<>effet sonore : "explode1"
<>déplacer/modifier événement : héros : commencer saut, terminer saut
<>afficher animation de combat : héros : "explosion"
<>message : KRASHBOUBADABOUM
<>téléporter l'équipe : début de la course
Condition : si variable "Héros Y" est inférieur ou égal à "5"
<>jouer musique : victoire
<>message : YOU WIN, bravo poulet !!!
<>téléporter l'équipe : Fin de la course
FIN DE BOUCLE


Voilà, maintenant à vous d'améliorer cette base très efficace !
Tous ce qui peut bloquer le héros sur votre map fera un crash^^

Si vous comprenez vraiment bien cette astuce, essayez de refaire la même chose mais vers la droite au lieu de vers le haut !

Si vous êtes malins vous pouvez programmer du saut d'obstacle ! (genre pendant qu'on saute, un interrupteur s'active et tous les obstacles sautable deviennent passable grâce à une seconde page avec cet interrupteur comme déclencheur ! A la fin du saut, l'interrupteur serait à nouveau désactivé)

Bilou !



Rokryn - posté le 26/06/2008 à 13:28:39 (5 messages postés)

❤ 0

je sais je suis pas sur VX mais de mon expériance de rpg maker il ya demander l'appuis d'une touche quelque part
ils ont du cacher ou camoufler la fonction ^^
Bonne chance pour la trouvé


Lallos - posté le 26/06/2008 à 21:49:31 (2 messages postés)

❤ 0

Pour VX, il faut faire:
@>Condition: la touche gauche est appuyée
@>Déplacer un évènement/héros: Héros (Ignorer si impossible)
: : $> Un pas Haut Gauche
@>
: Fin de la condition

Et, juste en dessous tu met la même chose mais avec la droite ^^

Ceci est une signature.


superfreeser - posté le 28/06/2008 à 18:59:17 (136 messages postés)

❤ 0

Bon tuto mais les explications sont lourdes!! :fache1


acireld - posté le 01/07/2008 à 15:33:25 (173 messages postés)

❤ 0

merci pour ce super tuto Joke ^^

voici un trailer d'un de mes projets ou je montre les mini jeux de courses que j'ai cré grace au tutorial de Joke . :F
http://fr.youtube.com/watch?v=TnebHvEOKmM



ps : si vous voulez tester mon jeu , rendez vous sur mon forum , inscrivez vous et vous pourez telecharger mon jeu ( la démo bien sur ^^)
http://rpg-games.forumpro.fr/index.htm

bon jeu a tous ;


Joke - posté le 01/07/2008 à 17:47:42 (5089 messages postés)

❤ 0

Bilouteux fou

Sur sa vidéo s'il y a des ralentissements c'est à cause du logiciel qui a prit la vidéo, le jeu lui-même ne ralentit pas du tout j'en suis témoin ^^

biloumaster.fr, mon joli site ouèb tout bô tout frai !


acireld - posté le 01/07/2008 à 19:03:06 (173 messages postés)

❤ 0

si , il peut ramer si le pc n'a pas de carte vidéo xDD


Tiploof - posté le 22/07/2008 à 09:50:48 (557 messages postés)

❤ 0

Je suis un furet qui make, espece en voit d'apparition :D.

Tu peux mettre le code exacte ? tu le copie colle ici. Stp comme ca on a pu qu'a le coller ... (parce que ton truc est trop long.)

Le projet VX 1.0.0, un projet mystérieux, vera-t-il le jour ? Que vaut-il ? Personne ne le sait. (me reste plus qu'a trouver le scenar et jpourrais commencer a le creer en faites :/.


Joke - posté le 22/07/2008 à 21:16:32 (5089 messages postés)

❤ 0

Bilouteux fou

Le code final est à la fin du tutoriel dans "RECAPITULATIF"

Mais ce tutoriel est périmé, maintenant que j'ai trouvé une nouvelle méthode plus simple et efficace (bien que celle-ci marche tout aussi bien) :
>>>Une course d'obstacle en UN SEUL événement<<<

Bilou !

biloumaster.fr, mon joli site ouèb tout bô tout frai !


Vyslanté - posté le 09/07/2009 à 18:52:02 (274 messages postés)

❤ 0

Prince du Valhalla, Maître de l'Olympe et Fistule parmi les Fistules !

Sympa le tuto.... Allez, je le met en pratique de suite !

Oxygennfait imploser des kevins en leur apprenant l’imparfait du subjonctif | Mon first tuto ! | Et voilà la BA la plus attendue du net !


xeno - posté le 09/10/2011 à 15:23:26 (21 messages postés)

❤ 0

Salut, j'ai juste un petit problème, sur le vx je ne trouve pas d'équivalent a "demander l'appui d'une touche"
Si quelqu'un peu m'aider j'y suis depuis 30min :p

u.g.o


Tata Monos - posté le 09/10/2011 à 15:36:05 (28 messages postés)

❤ 0

Compte Non utilisé

C'est directement dans les conditions ou tu peux tester si une touches est utilisée ou pas.


Klmett - posté le 12/05/2012 à 00:33:37 (32 messages postés)

❤ 0

Enorme tuto !

J'avais fait un jeu avec ce genre de mini jeux mais y a des trucs auxquels je n'avais pas pensé et qui vont me faire grave progresser, comme les events à tiroirs :)

En plus c'est bien expliqué et drôle merci :D

Parce que j'aime le Making mais aussi la musique, voici quelques mixes et sons : http://djklmett.free.fr/ :)

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/Plugins | 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