[PSP 0.9.2] Hautes herbes et traces de pas

0 Réponses • 196 Vues

Bonjour/Bonsoir à tous,

J'ai mis ce sujet dans la catégorie "Tutoriel", mais je ne suis pas réellement sur que cela y ait sa place.

"Inutile" diront certains, "Merci !" diront d'autres (bien élevés, au passage <3), "koman on a barpo" diront d'autres qui se sont particulièrement égarés, je vais vous présenter une solution pour faire bouger ces satanées herbes et qui, une fois installée, va grandement vous simplifier la vie !
Et c'est tout simple, en plus. Et je radote, en plus

Pré-requis
Oui, la méthode est toute simple, mais il faut tout de même quelques pré-requis.

Il faut d'abord que vous vous créiez une animation pour le mouvement des herbes et celui des traces de pas.
Je n'ai pas encore fait celui pour les pas, mais voici celui dont je me suis servi pour les herbes :
Spoiler

Ainsi que le screen de l'animation pour l'herbe :
Spoiler
Retenez bien le numéro de l'animation, c'est important.

Assurez-vous aussi que vos tags de tiles correspondent bien à ce que vous voulez !
Spoiler
Ici, 1 = Herbe, 2 = Sable, 7 = Eau

Enfin, il faut installer le script de Zeus81 permettant de jouer des animations aux coordonnées données d'une carte. Voici le lien : http://www.rpg-maker.fr/scripts-136-animation-partout.html
Évidemment, crédits pour lui.

Pour ce qui est de mettre le script, et de créer l'animation, je vous laisse faire :)
je ne doute pas que vous êtes meilleurs que moi à ce petit jeu.

La méthode
Bien ! Maintenant que vous avez tous les pré-requis, voici la méthode.

Elle se base sur un autre tuto que j'ai trouvé ici : http://www.rpg-maker.fr/index.php?page=tutos&id=244.
Écrit par Joke.

Mais chaque choses en son temps, et procédons par étapes.

1/ Des variables
Tout d'abord, il vous faut des variables.

Ces dernières enregistreront les coordonnées X et Y en temps réel de votre héros, et traceront ses anciennes coordonnées s'il se déplace.

Créez donc ces variables !


2/ Un interrupteur
Il vous faudra également un interrupteur pour la suite.

Ce dernier devra être activé au tout début de votre jeu, avant que vous ne preniez le contrôle de votre avatar.
Ensuite, vous n'y toucherez plus de la game (ou pas, à vous de voir si vous voulez désactiver les traces de pas ou non).

Créez donc cet interrupteur ! Faites pas attention aux autres interrupteurs, il m'arrive de tester des trucs.


3/ Un événement commun
Enfin, le coeur de la méthode.

Il s'agit d'un événement en processus parallèle (d'où l'interrupteur) qui va enregistrer les coordonnées du héros, et détecter le moindre changement (c'est à dire quand le héros se déplace).

Pou détecter un emplacement, il faut comparer les coordonnées précédentes du héros avec ses coordonnées actuelles.
Si elles sont els mêmes, le héros n'a pas bougé.
Si elles sont différentes, le héros s'est déplacé.
On va ensuite chercher à savoir quel est le tag terrain du héros (par la même condition script que dans l'Event de SURF), et lancer le script de Zeus81 à l'emplacement précédent du héros (deux derniers paramètres), avec l'animation qui va bien (ID de l'animation, en premier paramètre).
Le troisième paramètre est true ou false. Je n'ai pas compris à quoi il sert, donc je veux bien qu'on m'explique :'D Raison pour laquelle je me pose la question de l'emplacement de ce sujet, au début.
Je l'ai mis à true, c'est ce qui à l'air de fonctionner.

Ajoutez une entrée dans votre liste d'event communs, et ajoutez le fameux event. Ici, sobrement nommé "Traces de pas".
Déclenchement en processus parallèle, et actionné par l'interrupteur "Traces de pas" précédemment créé, donc.



Nous allons dans un premier temps initialiser nos variables de coordonnées.
Ensuite, nous rentrons dans une boucle infinie qui va détecter les mouvements du héros.

Voici le script pour la condition sur le tag terrain : $game_player.terrain_tag == ID (en remplaçant ID par le tag terrain qui va bien).
Et le script à utiliser pour déclencher l'animation : $game_temp.animations.push([IDA, true, $game_variables[30], $game_variables[31]]) (en remplaçant IDA par l'ID de votre animation)
Ici, les $game_variables[30] et [31] correspondent aux coordonnées précédentes du héros.
Vous devrez bien entendu modifier ces valeurs suivant vos propres variables.

Ici, j'ai une seule condition sur le tag 1, correspondant à l'herbe, et un sinon. Le sinon fera que l'animation de point d'exclamation se jouera en boucle sur tout ce qui n'est pas hautes herbes.
Je l'ai laissé pour tester, mais veillez bien à ne pas le mettre !

Ensuite, on enregistre les coordonnées actuelles du héros dans les variables "old", et on attend une frame à la fin de la boucle (DANS la boucle) pour éviter de faire laguer.

Vous n'avez plus qu'a lancer votre jeu sur une map avec de l'herbe.


Pour ajouter de nouvelles "traces de pas" sur un tag terrain, il vous suffira de mettre une condition similaire entre la fin de la condition "herbes" et l'assignation des nouvelles coordonnées, et de changer le numéro de tag et l'ID de l'animation :)
Cela vous permet d'avoir toutes vos animations "traces de pas" en un seul événement !



Voilà, c'est un peu approximatif, comme tuto, donc si vous avez des remarques, questions, incompréhensions, améliorations ou autres, n'hésitez pas :)
Comme je le disais, je n'ai pas pris le temps de tester avec le sable, ni sur l'eau, mais je pense que ça ne posera pas de soucis avec l'eau.
Néanmoins, personnes plus douées que moi, faites-le moi savoir si ça peut poser problème !

Et si Fl0rent_ passe pas là, est-ce que le mouvement des herbes et des traces de pas seront incluses dans PSP 0.10 ?

Fonctionnalité PSP Tuto Making


There was an error while thanking
Thanking...