I-Qu'est ce qu'une jauge ?
Çà peut paraître bête mais on peut apprendre beaucoup en revenant aux fondamentaux . Dans l'univers du game design , la jauge fait souvent partie du HUD (c'est a dire l’ensemble des images que l'on voit mais qui ne font pas partie de l'univers, exemple : dans Mario le compteur de pièce). Ce HUD nous permet de savoir notre situation dans le jeu notamment nos point de vie pour ce qui est des jauges,ce sera notre cas pratique pour ce tutoriel . Quel que soit vos nombres de PV maximum , il y a de forte chance pour que la jauge prenne toujours autant de place dans le HUD , en effet la jauge permet de représenter graphiquement la fraction de PV qu'il vous reste par rapport au maximum que vous pouvez avoir.Nous allons donc travailler sur des fractions , des pourcentages . Maintenant intéressons nous a ce qu'est graphiquement une jauge , Il y a une partie de la jauge qui ne change pas (l'encadré de la jauge) et une partie qui change , qui varie notamment en taille horizontalement : on aura donc 2 images , un cadre et une image du contenue de la jauge rempli , pour faire varier le remplissage de la jauge , on fera varier la taille du contenue de la jauge.
II-Changer la taille d'une image de manière variable
Intéréssons nous à l'affichage des images en évenement dans rpgmaker vx ace .
Nous avons en haut a droite l'option qui nous intéresse , le zoom horizontal qui permet de faire varier l'épaisseur d'une image (un zoom a 50 % correspondera a une jauge 2 fois moins large) ^^ hoora , le problème c'est que cette option est très utile quand on sait a quel pourcentage on veut que l'image soit réduite mais comment savoir a quel moment les PV de notre héros seront à 50% ou 30% , c'est assez dur de le savoir , le seul moyen pour faire ça facilement serait de trouver une expression pour afficher une image dont le zoom horizontal varie de manière dynamique , varie en fonction des PV de notre héros.C'est tout a fait possible a partir du moment où l'on touche un peu aux script.
1
| screen.pictures[n].show(nom, center_mode, x, y,zoom_x, zoom_y, opacity, blend_mode) |
n correspond au numéro de l'image , center mode peut prendre la valeur 0 ou 1 , x et y correspondent aux coordonnés , le zoom_x correspond au zoom horizontaal , c'est l'épaisseur de l'image en pourcentage par rapport a sa valeur originale , pareil pour le zoom_y qui est le zoom vertical . Opacity détermine la transparence de 0 (totalement transparent) a 255 (totalement opaque) , blend_mode correspond au mode de fusion (0=normal, 1= additif , 2=soustractif).
Il ne nous reste plus qu'à trouver l'expression qui permet de donner la valeur d'une variable dans le mini script , celle ci est la suivante :
1
| $game_variables[numéro_de_la_variable] |
III-Transformer une valeur en pourcentage
Notre but est donc de trouver une variable dont la valeur variera de 0 à 100 en fonction de la fraction de vie qu'il reste au perssonage (20 PV sur 40 donnera la même valeur que 100 PV sur 200).
Souvent j'utilise le calcul (Valeur/Valeur max)*100 , le problème c'est que RM ne prend pas en compte les décimale , cela veut dire que 0,9*100 va donner … 0 (ce qui est très loin de 90 % vous en conviendrez) , pour rpg maker on prendra donc la formule suivante : (Valeur * 100) / Valeur max.
Voilà donc l'évenement final : les 4 premières ligne permettent de placer la jauge juste au dessus du héro , ce qui est optionel , les 3 suivantes sont utilisés pour associer a la variable 3 un pourcentage de vie enfin les 2 suivantes consistent en l'affichage de l'image du fond de la jauge (statique et qui ne change pas) et l'image du contenue de la jauge (donc en script pour pouvoir changer son zoom y de manière dynamique).
Pour aller plus loin : On peut imaginer d'autres paramètres changeant avec les PV comme par exemple un icône qui devient de plus en plus transparent au fur et a mesure que les pv descendent ou un curseur qui se déplace sur un axe en fonction d'une variable .
voila la démo si sa vous intéresse (pour rpg maker vx ace) :https://mega.nz/#!4UlVGZBT!kL6vjFFAS_yNkpp8c_-44XCTAxcXFLWsooJ0Cgi7UEw
|