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

Jeux: Guardians Scouts / Jeux: Ketsuro / Tutos: Réaliser un Platformer avec (...) / Tutos: Réaliser un Platformer avec (...) / Scripts: Quest System / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

171 connectés actuellement

11243061 visiteurs
depuis l'ouverture

9 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Hellsoft

Planète Glutko

Eclipso

Le Temple de Valor

Kingdom Ultimate

Lumen

New RPG Maker

Tous nos partenaires

Devenir
partenaire



Sol glissant

Ou comment créer un zone de patinage sur glace (le héros glisse jusqu'à rencontrer un obstacle quand il entre en contact avec un sol glissant).

Ecrit par Ødd Clock le 06/06/2014


❤ 0

Bien le bonjour tout le monde !

Je suis fier d'écrire mon tout premier tuto sur Oniro ! image Celui-ci va vous expliquer comment réaliser le plus simplement possible une zone de patinage. Qu'est-ce donc que cela ? Nous avons tous, je pense, joué à Pokémon au moins une fois dans notre vie (je cite ce jeu pour exemple, mais bien d'autres jeux ont repris ce principe) et nous avons tous traversé une grotte de glace. Et nous avons tous du traverser une zone où le sol était gelé et sur lequel le héros patinait comme un dingue en ligne droite, ne pouvant changer de direction qu’à la rencontre d’un obstacle. C’est ce que ce tuto va vous apprendre à faire.
Ce genre d’énigme peut ajouter une belle touche de gameplay à votre jeu, que vous programmiez un RPG ou n’importe quel autre jeu du genre.

NIVEAU DU TUTO : Moyennement difficile.
Compatibilité : Le tuto sera réalisé avec les commandes de RM2003, mais il est bien sûr adaptable à toutes les versions de RM, sous réserve d’un tout petit peu d’adaptation selon la version utilisée.
Pour comprendre ce tuto, il est nécessaire de bien maîtriser les variables ainsi que l’utilisation et la gestion des terrains.


Pour commencer, mappez une petite map avec un chipset de glace, pour avoir un support visuel qui vous permettra de mieux comprendre comment ça marche. Pour l’instant, mappez les contours de la map avec un terrain « adhérent » et l’intérieur avec un terrain « glissant » :
image

Ensuite, allez dans la base de données du logiciel et créez un nouveau terrain (pour RM2000-2003) ou attribuez un numéro (RMXP/VX/VXACe) pour le tileset utilisé pour le terrain glissant. Comme j’utilise RM2003, je crée un nouveau terrain dont le numéro sera 21.

Le système fonctionne en deux évènements.


Stocker l'id du terrain

Créez un premier événement, qui servira à stocker le terrain sur lequel le héros se trouve.
Appelez cet événement « GESTION DU TERRAIN », mettez-le en processus parallèle, puis créez trois variables :
- Héros X : pour définir la coordonnée X du héros
- Héros Y : pour définir la coordonnée Y du héros
- Héros Terrain : pour définir l’ID du terrain sur lequel le héros se trouve.

Une fois ces variables créées, faites les réglages suivants :

Citation:

<> Variable « Héros X » = Coordonnée X du Héros (attention : ne pas rendre égal à la coordonnée Ecran !!!)
<> Variable « Héros Y » = Coordonnée Y du Héros



Puis, allez chercher l’onglet « Stocker l’ID d’un terrain », et sélectionnez « position définie par des variables », choisissez la variable « Héros X » pour X, et idem pour Y. Puis choisissez de stocker le résultat dans la variable « Héros Terrain ».
image

Placez un petit temps d’attente à 0.0 frames à la fin de l’événement (ou 0.1 frames selon la version de RM que vous utilisez), pour laisser un petit temps de calcul à l’événement, qui sera bien sur imperceptible en jeu.
Voilà. Avec cet évènement plutôt rudimentaire, vous pouvez savoir sur quel terrain le héros se trouve en permanence sur votre map.


Gérer les collisions

C’est maintenant que les choses se compliquent un peu image

Créez un deuxième événement sur votre map, que vous appelez « GESTION COLLISIONS », qui va servir à savoir si le héros est sur le terrain glissant ou non, et le faire patiner ou non en conséquence.
La première page de votre évent sera celle qui servira à considérer le non-patinage, c’est à dire que le héros se trouve sur un terrain adhérent et donc à ne pas glisser. Cette page doit être en processus parallèle. Mettez en condition de déclenchement de la page : Si variable « Héros Terrain » est inférieure à 21 (c’est l’ID que j’ai choisi, mais vous devez remplacer 21 par le chiffre que vous utiliserez pour votre sol gelé).
image

Dans la programmation de cette page, mettez ceci :

Citation:

<> Déplacer événement : Héros : Direction fixe : OFF, Animation de marche : ON
<> Autoriser l’accès au menu (oui parce qu’on va le bloquer plus tard, il ne faut pas pouvoir accéder au menu pendant qu’on patine, ça foutrait le bordel dans l’univers intrasèque de la vie des esquimaux à la fraise. Et au fonctionnement du jeu, accessoirement)
<> Attendre 0.0 frames (ou 0.1 frames)
<> Mettre une étiquette : 1
<> Attendre 0.0 frames (ou 0.1 frames)
<> Aller à une étiquette : 1



Je vous explique : l’événement va capter que vous êtes sur un terrain qui n’a pas pour ID 21 (ou votre chiffre), il va donc vous faire revenir à une apparence de « marche », puis, pour ne pas le faire en boucle, on bloque le déroulement avec un aller-retour par étiquettes, avec un temps d’attendre pour ne pas ramer. Ceci pour permettre de ne pas entrer en contradiction avec un autre événement que déplacerait le héros si jamais vous deviez en faire un. C’est bon, vous suivez ?


Ensuite, créez une deuxième page dans l’événement « GESTION COLLISIONS » et à l’inverse de la première page, mettez en condition de déclenchement : Si variable « Héros Terrain » est égale à 21. (et non pas supérieure ou égale, je vous expliquerai pourquoi). Cette page doit également être en processus parallèle.
Mettez tout de suite la boucle suivante :

Citation:

<> Placer une étiquette : 1
<> Attendre 0.0 frames (ou 0.1 frames)


Cette première entrée de boucle contiendra la programmation qui servira à faire changer de direction le héros quand celui-ci sera bloqué par un obstacle.

Ensuite, placez les commandes suivantes :

Citation:

<> Déplacer un événement : Héros : Direction fixe : OFF
<> Condition : La touche Bas est pressée (Case « Sinon » Cochée)
<> Déplacer un événement : Héros : Regarde en bas, Direction fixe : ON
<> Aller à l’étiquette : 2
<> Sinon, Condition : La touche Haut est pressée (Case « Sinon » Cochée)
<> Déplacer un événement : Héros : Regarde en Haut, Direction fixe : ON
<> Aller à l’étiquette : 3
<> Sinon, Condition : La touche Droite est pressée (Case « Sinon » Cochée)
<> Déplacer un événement : Héros : Regarde à droite, Direction fixe : ON
<> Aller à l’étiquette : 4
<> Sinon, Condition : La touche Gauche est pressée (Case « Sinon » Cochée)
<> Déplacer un événement : Héros : Regarde à gauche, Direction fixe : ON
<> Aller à l’étiquette : 5
<> Sinon : Aller à l’étiquette 1




Par ces commandes vous définissez dans quelle direction le héros va regarder, et donc va patiner par la suite.

(Ici, nous aurons besoin de 4 nouvelles variables :
« Héros X glisse » et « Héros Y glisse » : redéfinir les coordonnées du héros car nous ne pouvons pas toucher aux précédentes variables, nécessaires au stockage de l’ID du terrain.
« Terrain en face » et « Evènement en face » : Ces variables serviront à savoir si un obstacle se trouve devant le héros lors de sa glissade.
Nous aurons également besoin d’un nouveau terrain : Ici je choisis le terrain suivant, ce qui me donne le numéro 22 dans la base de données de RM2003. Ce terrain servira à savoir quand le héros rencontrera un obstacle. Ce n’est pas la même chose que rencontrer un terrain adhérent. Attribuez cet ID à une case de terrain.)

(JE PLACE UN CHECKPOINT ICI. NOUS DEVRONS REVENIR A CE POINT PLUS TARD)

En dessous de toutes ces commandes, faites :

Citation:

<> Placer une étiquette : 2
<> Interdire l'accès au menu
<> Condition : Si héros regarde : en bas
<> Variable « Héros X glisse » = Coordonnée X du héros
<> Variable « Héros Y glisse » = Coordonnée Y du héros
IMPORTANT ! <> Variable « Héros Y glisse » + 1 (pour se placer sur la case juste devant le héros)
<> Stocker l’ID d’un terrain : X = Variable « Héros X glisse », Y = Variable « Héros Y glisse », Stocker le résultat dans la variable « Terrain en face »
<> Condition : Si la variable « Terrain en face » est différent de 22 (Case « Sinon » Cochée)
<> Stocker l’ID d’un évènement : X = Variable « Héros X glisse », Y = Variable « Héros Y glisse », Stocker le résultat dans la variable « Evènement en face »
<> Condition : Si la variable « Evènement en face » est inférieur à 1 (Case « Sinon » Cochée)
<> Déplacer un événement : Héros : Animation de marche : OFF, un pas vers le bas
<> Attendre 0.0 frames (ou 0.1 frames)
<> Aller à l’étiquette 2
<> Sinon (de la condition événement) : Aller à l’étiquette 1
<> Sinon (de la condition terrain) : Aller à l’étiquette 1




Retournez au CHECKPOINT, et refaites la programmation avec les 3 autres directions, en changeant bien le numéro d’étiquette à chaque fois :
2 = Bas
3 = Haut
4 = Droite
5 = Gauche

Il faut aussi changer la variable marquée « IMPORTANT ». Cette variable définit la case à considérer en fonction de la direction du héros, elle doit être réglée en conséquence.
Bas : Variable « Héros Y glisse » + 1
Haut : Variable « Héros Y glisse » - 1
Droite : Variable « Héros X glisse » + 1
Gauche : Variable « Héros X glisse » - 1

Mettez bien les quatres directions les unes à la suite des autres SANS LES EMBOITER DANS LEURS CONDITIONS RESPECTIVES. Les étiquettes se chargeront de différencier les directions du héros à prendre en compte pour avancer.
Je n’utilise pas la commande « Pas en avant » car je dois modifier en fonction de la direction du héros la case qui est devant lui (c’est elle qui sert à détecter s’il y a un obstacle).
Après avoir programmé les 4 directions, ajoutez un petit temps d'attente pour finir, comme fait précédemment, pour laisser respirer un peu notre évènement image

Voilà, vous avez fini la programmation. Maintenant il reste un détail important à régler. Sous certains version de RM (et quasiment toutes je crois) il n’est pas possible d’attribuer un numéro de terrain aux éléments se trouvant sur la couche supérieur de la map. Pour pallier à cela, il existe une petite astuce.

Voici par exemple un placement d’obstacle :
image

Maintenant, je passe en couche inférieure. Sous chaque « pied » d’obstacle, là où le héros va se retrouver bloqué, je place mon terrain dont l’ID est égale à 22 (ou le chiffre que vous avez choisi)
image

Ici, bien sûr, j’utilise les RTP donc le résultat au niveau graphique n’est pas top car on verra en jeu qu’il y a une case son mon « pic ». Mais ce souci peut facilement s’arranger en retouchant un poil le chipset pour créer une case spécifique qui se mariera avec la glace.


Voilà, c’est terminé !

Pour voir le résultat de ce tuto, je vous invite à jouer à ce jeu ! (PUB = OFF image)


Merci à tous d’avoir suivi ce tuto de patinage hautement artistique, et je vous invite à laisser des commentaires image

Gros bisous les loulous !



Ødd Clock - posté le 06/06/2014 à 22:23:35 (471 messages postés)

❤ 0

Il s'avère que le temps passe sans vous voir.

Juste un léger détail que j'ai oublié de préciser : si vous réalisez ceci sous RM2000/2003, il faut décocher "attendre l'appui d'une touche" lorsque vous demanderez la détection d'appui de la touche.

C'est important ! :D

SwingSoft Productions - Studio de jeux amateurs | A-RPG : Forstale - La Légende des Grands Sauveurs | Ma Galerie | Page Facebook de Forstale


RPG Fusion - posté le 06/06/2014 à 22:34:03 (368 messages postés)

❤ 0

Tout programmer soit même, c'est mieux

Très bon tuto. Il fonctionne impec'.
Bien joué Odd Clock ;)

Tout programmer soit même, c'est quand même bien mieux


Ephy - posté le 07/06/2014 à 10:25:14 (28860 messages postés) - honor

❤ 0

MFIU

Citation:

Mettez en condition de déclenchement de la page : Si variable « Héros Terrain » est inférieure à 21 (c’est l’ID que j’ai choisi, mais vous devez remplacer 21 par le chiffre que vous utiliserez pour votre sol gelé).


Il ne serai pas plus judicieux de mettre "héros terrain" différent de 21? Comme ça si plus tard on a besoin de rajouter des terrains au delà de 22 on a pas de problèmes?



Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14


Ødd Clock - posté le 07/06/2014 à 12:52:08 (471 messages postés)

❤ 0

Il s'avère que le temps passe sans vous voir.

Oui différent de 21 c'est encore mieux effectivement. J'ai mis inférieur car je n'utilise que très peu les terrains dans mes jeux, mais dans l'absolu oui tu as tout à fait raison ;)

Sinon j'ai bien vu ton MP, je vais te rédiger une solution toute simple pour ton compteur ;)

SwingSoft Productions - Studio de jeux amateurs | A-RPG : Forstale - La Légende des Grands Sauveurs | Ma Galerie | Page Facebook de Forstale


Bobipineman - posté le 18/11/2019 à 23:22:28 (12 messages postés)

❤ 0

Ça fonctionne avec n'importe quel evenement paralel relier au terrain.
notament changer les sprite de perso

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