Bonjour,
Je me mets enfin sur GMS pour mon nouveau projet. Jusqu'à présent j'étais sur AGS, mais j'avais essayé il y a longtemps GM8.
Mais là je galère comme pas possible !
1) Je n'arrive pas à comprendre l'animation d'un personnage. Déjà je voudrais qu'il se retourne. Les outils copier/coller sont plus limités que dans mon souvenir :'( J'arrive à déplacer à droite et à gauche mon personnage, mais pas à le faire se retourner. J'ai trouvé de vieux tutos qui disent de faire 2 sprites, mais franchement je trouve ça archaïque
2) Comment dire à GMS d'utiliser au repos un certains sprite, et un autre pendant le déplacement ?
3) Foutu step globale !! J'ai mis une step de 30 dans ma room, mais je voudrais que mon personnage (qui a 8 frames) ait une step de 10. Je ne veut pas mettre step=10 dans ma room, car le jeu perdrais en fluidité. Sur AGS c'est très simple, mais ici... Suis-je condamné à "bidouiller" en "trichant" sur mon nombre de frame dans le sprite d'animation ??
Et si par hasard vous avec un lien pour un vrai bon gros tuto en fr, sur GMS, bien détaillé... JE SUIS PRENEUR !
Merci d'avance
Hello chefgeorges,
1) image_xscale = -1 va retourner ton sprite.
2) image_index = spr_marche ou image_index = spr_repos va faire le job. J'avais prévu de faire un tuto sur les machines d'états hier sur Gmfrance.net qui permet de gérer le changement d'animation proprement sans mettre plein de conditions imbriquées. Je posterai le lien lorsque ce sera fait.
3) Heu, heureusement que le step est global. Imagines si chaque objet ne réagissait pas au changement avec le même timing, ce serait tout simplement ingérable. Si ce que tu veux, c'est changer la vitesse d'animation, tu peux utiliser image_speed = 0,3. Cela divisera ta vitesse d'animation par 3 à peu près.
Conceptgame
Merci
A force de bûchage intensif, j'ai bidouillé (ça fonctionne et sans bug):
image_speed = 0.3;
if (keyboard_check(vk_up) and keyboard_check(vk_right))
{x+=2; y-=2; sprite_index=player_moveD;}
else if (keyboard_check(vk_up) and keyboard_check(vk_left))
{x-=2; y-=2; sprite_index=player_moveG;}
else if (keyboard_check(vk_down) and keyboard_check(vk_right))
{x+=2; y+=2; sprite_index=player_moveD;}
else if (keyboard_check(vk_down) and keyboard_check(vk_left))
{x-=2; y+=2; sprite_index=player_moveG;}
else if keyboard_check(vk_up) and player.sprite_index=player_standG xor sprite_index=player_moveG
{x+=0; y-=2; sprite_index=player_moveG;}
else if keyboard_check(vk_up) and player.sprite_index=player_standD xor sprite_index=player_moveD
{x+=0; y-=2; sprite_index=player_moveD;}
else if keyboard_check(vk_left)
{x-=2; y-=0; sprite_index=player_moveG;}
else if keyboard_check(vk_down) and player.sprite_index=player_standG xor sprite_index=player_moveG
{x+=0; y+=2; sprite_index=player_moveG;}
else if keyboard_check(vk_down) and player.sprite_index=player_standD xor sprite_index=player_moveD
{x+=0; y+=2; sprite_index=player_moveD;}
else if keyboard_check(vk_right)
{x+=2; y-=0; sprite_index=player_moveD;}
else if keyboard_check_released(vk_left) or keyboard_check_released(vk_right) or keyboard_check_released(vk_down) or keyboard_check_released(vk_up)
{
if player.sprite_index=player_moveG
{player.sprite_index=player_standG}
else
{player.sprite_index=player_standD}
}
Par contre, mon personne est parfois légèrement flou... J'ai peut-être un piste, mais si tu sais d'où ça vient
WHITE IS MORE DEAD - ÉPISODES I-II-III - Saison 1 (Point & Clic)
Oula oui, c'était bien sprite_index et non pas image_index qu'il fallait utiliser.
Ce que tu as fait est similaire à cette vidéo tutorial qui est plutôt bien faite: https://www.youtube.com/watch?v=g2VMatd232M&index=3&list=PL9FzW-m48fn2ug_FSNnfozQs3qYlBNyTd.
Continues à factoriser et optimiser et cela sera du tout bon.
Pour le flou est-ce que tu as essayé d'enlever l'interpolation des couleurs dans les Global Game Settings -> Windows -> Graphics -> interpolate colors between pixels.
Conceptgame