Bonjour,
Aujourd'hui, je vais vous partager un script permettant d'utiliser les characters de rpg maker par exemple. Si vous voulez directement le script, voyez le bout du message, si vous voulez savoir comment le créer et bien l'utiliser, lisez la suite du message.
On commence.
I. Importation du character
Tout d'abord, ouvrez l'éditeur de sprite. Cliquez sur edit sprite, puis File et enfin Create from strip. Sélectionnez votre character, ici je vais prendre Arshes.

Appuyez sur ouvrir. Vous vous retrouvez avec un nouvel écran. Faites les réglages comme suit, c'est à dire number of images 16, images per row 4, image width 32 et image height 48. Ce sont les dimensions pour un character par défaut, si votre character est plus grand ou plus petit, vous devrez changer image width et height pour que chaque "pose" soit dans un carreau différent.

Vous vous retrouvez avec ceci.

Nous en avons finis avec l'éditeur de sprite.
II. Création du script
Créez un nouveau script que vous nommerez comme vous le voulez. Personnellement, j'ai choisis animation_deplacement.
A supposer que vous avez déjà un script vous permettant le déplacement (dans le cas contraire, il vous en faut un), vous devez rajouter 4 lignes si elles ne sont pas présente :
- Code: Tout sélectionner
direction=0;
A l'endroit où le character va vers la droite
- Code: Tout sélectionner
direction=180;
A l'endroit où le character va vers la gauche
- Code: Tout sélectionner
direction=90;
A l'endroit où le character va vers le haut
- Code: Tout sélectionner
direction=270;
A l'endroit où le character va vers le bas
Pensez à appeler le script de déplacement dans votre event step, par exemple.
- Code: Tout sélectionner
animation_deplacement();
Si vous avez choisis le même nom que moi.
Ajoutez aussi les deux lignes suivantes dans votre event create afin d'initialiser 2 variables, vous verrez à quoi elles servent très bientôt.
- Code: Tout sélectionner
image_min=0;
image_max=0;
Tout d'abord, les 4 lignes qui vont suivre sont optionnelles. Elles sont à mettre uniquement si votre jeu présente des déplacement en diagonale. Pour vous expliquer briévement, si l'objet se déplace par exemple vers le haut-droite, avec un angle de 45°, la direction sera mise à 0 au lieu de 90, afin que le sprite ne change pas rapidement entre la droite et le haut, il ira uniquement vers la droite.
- Code: Tout sélectionner
if (direction < 90) {direction = 0;}
if (direction > 89 && direction < 180) {direction = 90;}
if (direction > 179 && direction < 270) {direction = 180;}
if (direction > 269) {direction = 270;}
Maintenant le gros du code. Nous avons 4 poses pour chaque direction, il faut donc trouver un moyen pour que les 4 premières poses uniquement soit jouées quand le joueur va vers le bas, les 4 suivantes quand il va vers la gauche etc. C'est là que
image_min et
image_max interviennent.
image_min donnera l'image de départ, et
image_max, l'image à partir de laquelle il faudra repartir à l'image de départ.
Commencez par créer un switch avec la variable direction.
- Code: Tout sélectionner
switch direction
{
}
On va faire dans l'ordre des images, donc bas, gauche, droite, haut. Pour le bas, la direction est 270, donc entrez
case 270, sans oublier le
break; ensuite.
- Code: Tout sélectionner
switch direction
{
case 270:
break;
}
Il faut maintenant insérer
image_min et
image_max dans ce code.
image_min correspondra à la première image à jouer (ici 0) et
image_max à la dernière image.
- Code: Tout sélectionner
switch direction
{
case 270:
image_min=0;
image_max=4;
break;
}
Là, vous testez votre code, et, horreur ! Le character change de sprite vers la gauche, pendant moins d'une demi seconde certes, mais c'est quand même visible !
Ne vous inquiétez pas, pour éviter ce problème, il suffit de changer le 4 de
image_max en 3.99. Ainsi, la 3ème image aura le temps de s'afficher dans son intégralité, sans que la 4ème se monter brièvement pour autant.
Il suffit ensuite de faire pareil pour les autres direction. Je vous laissez un peu réfléchir.
Vous devriez avoir ça au final :
- Code: Tout sélectionner
switch direction
{
case 270:
image_min=0;
image_max=4;
break;
case 180:
image_min=4;
image_max=7.99;
break;
case 0:
image_min=8;
image_max=11.99;
break;
case 90:
image_min=12;
image_max=15.99;
break;
}
Ne prenez pas peur, c'est presque finis. plus que 2 lignes, qui sont extrêmement importantes. Voilà, vous avez définis la première et la dernière image selon la direction. C'est bien beau, mais il faut maintenant que la première image se réaffiche après la dernière image. Vous aurez besoin de la variable built-in
image_index qui stocke l'image affichée en cours.
Voilà ce qu'il faut faire en français : SI l'image affichée (
image_index) est plus grande que la dernière image (
image_max) ALORS retourner à la première image (
image_min).
Une condition donc. Avant que vous essayez de l'écrire seul, il faut rajouter un bout, afin que si l'image affichée est plus petite que
image_min, l'image affichée retourne à
image_min, ceci afin d'éviter que la mauvaise image soit affichée temporairement lors du changement de direction.
Ce qui donne en français : SI l'image affichée (
image_index) est plus grande que la dernière image (
image_max) OU l'image affichée (
image_index) est plus petite que la première image (
image_min) que ALORS retourner à la première image (
image_min).
Je vous laisse cogiter quelques minutes, essayez d'écrire la condition seul, ça vous entraînera.
Sinon, la voici (à rajouter à la fin du script) :
- Code: Tout sélectionner
if (image_index > image_max || image_index < image_min)
{
image_index=image_min;
}
Voilà, le tutorial est terminé. J'en ferais d'autre si ça vous plait. Amusez-vous bien

.
Voici le script final :
- Code: Tout sélectionner
/*
Script réalisé par Sirus.
Si vous repostez le script quelque part, merci de me prévenir et de me citer comme auteur.
Aucune autorisation ni crédit nécessaire pour l'utilisation dans vos jeux.
Vous devez initialiser les variables image_min et image_max dans le create de votre objet ainsi qu'appeler le script dans votre step event.
Par défaut, les sprites doivent être dans ce sens : 4x bas, 4x gauche, 4x droite et 4x haut.
*/
if (direction < 90) {direction = 0;} // les 4 lignes sont inutiles si il n'y a pas de déplacement en diagonale
if (direction > 89 && direction < 180) {direction = 90;}
if (direction > 179 && direction < 270) {direction = 180;}
if (direction > 269) {direction = 270;}
switch direction
{
case 270:
image_min=0;
image_max=3.99;
break;
case 0:
image_min=8;
image_max=11.99;
break;
case 90:
image_min=12;
image_max=15.99;
break;
case 180:
image_min=4;
image_max=7.99;
break;
}
if (image_index > image_max || image_index < image_min)
{
image_index=image_min;
}
Pour 2 direction seulement (gauche et droite), utile pour les jeux de plate-forme :
- Code: Tout sélectionner
/*
Script réalisé par Sirus.
Si vous repostez le script quelque part, merci de me prévenir et de me citer comme auteur.
Aucune autorisation ni crédit nécessaire pour l'utilisation dans vos jeux.
Vous devez initialiser les variables image_min et image_max dans le create de votre objet ainsi qu'appeler le script dans votre step event.
Par défaut, les sprites doivent être dans ce sens : 4x gauche, 4x droite.
*/
switch direction
{
case 180:
image_min=0;
image_max=3.99;
break;
case 0:
image_min=4;
image_max=7.99;
break;
}
if (image_index > image_max || image_index < image_min)
{
image_index=image_min;
}