Petit tutorial en event de crochetage de serrure (porte ou coffre) adapté pour RPG MAKER XP d'après le Système de crochetage
Ecrit par arccos (j'ai simplement changé les screens pour que l'adaptiez pour XP)
Voici le tutorial d'Arccos pour les crédits
Bonjour, ce tutoriel (expérimenté sur VX mais qui peut tout à fait marcher pour les autres versions, en adaptant les commandes) va vous permettre de créer une animation interactive lorsqu'un héros de votre RPG voudra crocheter une serrure (porte, coffre...).
Ce tuto est assez long à lire mais beaucoup plus rapide à mettre en application : ne soyez pas affolé par la longueur du texte, c'est juste que j'ai tout décrit en disant pourquoi, comment, où et comment le modifier à votre aise.
Voici un aperçu du résultat
I/Les imagesPour ce tutoriel, vous pouvez créer vous-même les images que vous allez utiliser mais pour tester, je vous conseille de prendre les mêmes que les miennes.
La barre principale (nommez-la "barre") :
Le "loquet" de la serrure (nommez-la "loquet") :
Le crochet qui sert à crocheter (nommez-la "crochet") :
Les chiffres pour indiquer le nombre de crochets possédés (nommez chaque image par son chiffre) :
On pourrait continuer mais 10, c'est suffisant.
Et en dernier, l'image qu'on mettra à côté du chiffre, l'icone du crochet (nommez-la "nb_crochet") :
Placez toutes ces images dans le dossier Pictures de votre projet.
II/PréparatifsPour commencer, créez les interrupteurs suivants :
- crochetage <= il nous servira pour activer l'animation
- crocheté <= il permettra de déverrouiller la porte/coffre si le crochetage est réussi
- milieu <= pour détecter si le loquet est oui ou non sous le crochet
Vous aurez aussi une variable à créer :
- nombre crochets <= elle représente bien entendu le nombre de crochets possédés
D'ailleurs, vous pouvez créer un nouvel objet nommé Crochet. J'ai choisi pour ma part l'objet clef de voleur.
III/La porte/coffreDans la map désirée, créez une porte ou un coffre qui devra être déverrouillé(e).
Première page :
Dans la première page, mettez l'apparence désirée à votre évènement et un déclenchement en touche action.
Ensuite, il vous suffit de remplir comme ceci :
- Spoiler:
>Delta : "Les images effacées sont celles que vous allez utiliser."Explications :
- Spoiler:
Au début, on fait apparaître le message que le joueur verra en actionnant le coffre. On lui dit dans ce message que le coffre est verrouillé.
On affiche un choix (Oui ou Non) pour savoir si le joueur veut oui ou non crocheter le coffre.
Si le joueur choisi Oui, on rend la variable nombre crochets égale au nombre d'objets "Crochet" possédé par le joueur.
Toujours dans Oui, on vérifie si le joueur possède au moins 1 crochet. Il faut faire une condition : SI variable nombre crochets est supérieure ou égale à 1, interrupteur crochetage activé (pour lancer le crochetage) SINON le message "Vous n'avez pas assez de crochets" s'affiche.
Si le joueur choisi Non, il ne se passe rien. Vous avez terminé la première page.
Deuxième page :
Vous remettez la même apparence que la page précédente mais en déclenchement automatique si l'interrupteur crochetage est activé (en cochant en haut à gauche).
Cette fois, le contenu est un tout petit peu plus compliqué :
- Spoiler:
Explications :
- Spoiler:
On modifie le ton de l'écran en réglant toutes les valeurs sur -100 (RVB) et le gris sur 150 ou 200. Cela a pour effet d'obscurcir l'écran et de se concentrer sur l'animation.
Ensuite, on met les images !
On insère d'abord en image 1, l'image "barre" en origine Centre et coordonnées X270 et Y200.
On insère en image 2 le "loquet" toujours en origine Centre mais en coordonnées X405 et Y200 (on le place au bout de la barre).
La troisième image c'est le "crochet" qu'on ajoute (image 3) toujours en origine Centre et en coordonnées X270 et Y170 (pour le placer juste un peu au-dessus du loquet et de la barre).
On vient juste d'afficher l'animation au complet...sauf qu'une animation inanimée, c'est pas très utile ^^
C'est pourquoi on commence une boucle. A l'intérieur, on ne va cesser de déplacer l'image 2.
On fait un premier déplacement en X280 Y200 de transition 30 frames en n'oubliant pas l'origine Centre. On fait donc déplacer le loquet depuis droite jusqu'à l'endroit juste avant le milieu.
Ensuite, on active l'interrupteur milieu.
On déplace toujours la même image (n°2) vers X260 Y200 en origine Centre de transition 10 frames.
On désactive l'interrupteur milieu.
Ce qu'on vient de faire, c'est de dire au programme que lorsque le loquet est au milieu (entre X280 et X260), l'interrupteur milieu est activé.
On va maintenant faire le déplacement inverse.
On déplace l'image 2 tout à gauche en X135 Y200 Centre Transition 30 frames.
On la déplace de nouveau en X260 Y200 Centre Transition 30 frames.
Le loquet va de nouveau passer au milieu : on active l'interrupteur milieu.
Ensuite pour le déplacement suivant : X280 Y200 Centre Transition 3 frames.
Le milieu va être dépassé, on désactive milieu.
On remet l'image du loquet dans sa position initiale : X405 Y200 Centre Transition 30 frames.
Le mouvement sera répété sans arrêt grâce à la boucle.
C'est une des modifications que je trouve "utile" au tuto de BotoX car le déplacement est fluidifié par les transitions et il y a quand même moins de ligne de code ^^
Mais toujours en restant dans la boucle, on fait une condition SI l'interrupteur crocheté est activé, sortir de la boucle. Pour tout simplement arrêter l'animation si le joueur a réussi le crochetage.
Voilà, vous avez fait le plus gros de cet évènement. Il reste juste une seule page à faire, très simple
>Delta : "J'ai supprimé la boucle car cela faisait buguer le résultat et j'ai fait l'event sur deux pages"Troisième page :
Avec l'apparence du même coffre, en déclenchement touche action, en cochant "si l'interrupteur crocheté est activé".
C'est là que vous mettez ce qui se passe quand le joueur ouvre le coffre déverrouillé : c'est à dire ce qu'il trouve dedans. Si c'est une porte, la téléportation.
- Spoiler:
Ouf, vous avez fini pour cet évènement, il en reste 2 (dont un évènement commun), mais plus simples
>Delta : "Très important vous devez sur la map ou ce trouve l'objet à crocheter désactiver l'interrupteur crocheter"- Spoiler:
IV/CrocheterMaintenant que l'animation est prête et fonctionnelle, on peut créer un évènement sur la map en processus parallèle et en cochant "si l'interrupteur crochetage est activé". Ne mettez aucune apparence.
- Spoiler:
Explications :
- Spoiler:
On fait d'abord attendre 10 frames, pour à la fois fluidifier le jeu et empêcher le joueur de crocheter dès que l'animation est lancée.
On fait une grosse condition SI la touche C est pressée. Attention, la touche C correspond à la touche action sur VX (c'est à dire Entrée, Espace).
A l'intérieur on commence par déplacer l'image n°3 (celle du crochet) en X270 Y195 Centre Transition 5 frames. Ceci correspond au crochet qui descend rapidement lorsque le joeur appuie sur la touche Entrée.
Condition SI l'interrupteur milieu est activé (c'est à dire si le loquet est en face du crochet) :
- on joue un effet sonore SE (au choix, moi j'ai pris Decision2)
- on affiche le message "Crochetage réussi !".
- on active l'interrupteur crocheté (pour indiquer que le crochetage est réussi).
- on désactive les interrupteurs loquet et crochetage pour sortir de l'animation.
- on efface les images 1, 2, 3, 4, et 5. Les images 4 et 5 (que nous n'avons pas encore vu) sont utilisées dans l'évènement commun.
- On remet le ton de l'écran en normal (0 pour toutes les valeurs).
SINON <= si le loquet n'est pas en face du crochet
- jouer un effet sonore SE (au choix, j'ai pris le Key).
- on secoue l'écran en force 3 vitesse 7.
- on déplace l'image 3 du crochet en X270 Y170 Centre Transition 5 frames. En fait, on le remet à sa position de départ.
- comme le crochetage n'a pas réussi pour cette tentative, le crochet est cassé : retirer 1 "crochet" à toute l'équipe.
- on vérifie maintenant si le joueur possède toujours assez de crochets dans une autre condition (à l'intérieur de la première, toujours dans le SINON) :
-SI variable nombre crochets est strictement inférieure ou égale à 0 alors afficher un message "vous n'avez plus assez de crochets !". Ensuite, on remplit exactement comme dans la condition précédente : on supprime les images, on désactive les interrupteurs crochetage et loquet, on remet le ton de l'écran à 0 mais on n'active pas l'interrupteur crocheté.
Voilà, il ne nous reste plus qu'à faire l'évènement commun, pour afficher le nombre de crochets à l'écran.
V/Afficher le nombre de crochet (évènement commun)Allez dans la base de données à l'onglet évènements communs. Créez-en un nouveau, appelez-le "crochets" et mettez-le en processus parallèle, déclenché par l'interrupteur crochetage (pour qu'il ne s'affiche que lorsqu'on crochète).
- Spoiler:
Il faut juste faire attendre 1 frame, afficher l'image 4 "nb_loquet" en origine Haut-Gauche vers le point X500 Y000.
On vérifie le nombre de crochets possédés : variable nombre crochets == nombre de "crochet" possédés.
Et là préparez votre patience ^^ Il faut faire une condition pour chaque nombre (de 1 à 10) de crochets possédés. C'est à dire une condition pour 10 crochets possédés, une condition pour 9 crochets...en n'oubliant pas le 0. C'est pour ça que j'ai dit au début que 10, c'est largement suffisant ^^. Si l'utilisateur en a plus (+), vous pouvez faire dans la condition pour 10 : supérieur ou égal à 10.
Dans chaque condition, vous placez l'image correspondant en n°5 origine H.G, 460X 0Y.
Voilà, votre système est prêt et vous pouvez le tester
Mais pourquoi ne pas le modifier un peu selon vos envies ?
VI/PersonnalisationSi vous avez testé, vous remarquerez que le loquet ralentit légèrement au milieu. Si vous trouvez ça trop simple, vous n'avez qu'à baisser les transitions dans la deuxième page de l'évènement coffre (ou porte). Ne baissez que les valeurs entre X280 et X260. Vous avez juste à modifier le temps de transition (le baisser).
Si vous trouvez que le loquet est trop lent en général, vous pouvez baisser proportionnellement toutes les transitions de tous les déplacements de l'image 2, dans la page 2.
Si vous êtes sadique, vous pouvez au contraire accélérer seulement entre X280 et X260. Enfin bref, jouez avec les transitions.
Vous pouvez aussi changer les coordonnées en X pour faire déplacer le loquet irrégulièrement. Vous pouvez créer deux variables "X loquet" et "Y loquet" par exemple et à chaque début de boucle, rendre égale la première à une valeur aléatoire entre 135 et 405 (qui sont les deux extrémités X de la grande barre) et la deuxième à 200. Juste après, il faut déplacer l'image 2 en origine centre, aux coordonnées X égales à la variable X loquet et les coordonnées Y définies par la variable Y loquet. La transition est entre 20 et 30 frames (conseillé).
Ensuite, il faut faire la condition SI la variables X loquet est supérieure ou égale à 260. Dans cette condition, refaire une condition avec SI X loquet est inférieure ou égale à 280, activer l'interrupteur milieu.
Le seul problème de cette manipulation, c'est que si le nombre aléatoire de X loquet n'est pas entre 260 et 280, il ce peut quand même qu'il passe au milieu. C'est pourquoi je vous conseille de mettre un transition courte (moins de 30 frames) pour que l'utilisateur n'ai pas le temps de le toucher (du moins, qu'il en ai l'impression) alors que lorsque que la valeur est comprise entre 260 et 280, c'est là que le loquet a le plus de chance d'être le plus lent. Pourquoi ? parce que le milieu est le plus proche de toutes les autres valeurs (en moyenne).
Voilà, c'est terminé ! J'espère que ce tutoriel vous servira.
Je vous rappelle que ce tutorial est d' Arccos. Je l'ai juste adapté pour qu'il fonctionne sous XP Delta.