| [Résolu] Etat Sprite ? | |
|
|
Auteur | Message |
---|
Gumboy Débutant
Messages : 10 Localisation : Dijon
| Sujet: [Résolu] Etat Sprite ? Dim 7 Oct 2012 - 17:28 | |
| Bonjour, tout d'abord je ne savait pas si ce sujet allait dans cette section, messieurs les modos veuillez m'excusez si ce n'est le cas ^^.
Voila j'ai un problème assez énervant, J'ai un personnage (plateforme gaming) qui a ces actions en plusieurs etat :
1er état (mode normal) : il cour droite/gauche, saute. 2eme état (mode perception) : il cour droite/gauche, saute et ces sprites changent.
Le problème est que je voudrait lors du passage de l'etat normal a l'état perception, le sprite change en fonction de ce qu'il fait. Ex : il cour vers la gauche en mode normal (donc sprite perso_cour_gauche_normal) et j'appuis sur "espace" et le sprite change (donc sprite perso_cour_gauche_perception). Ex 2 : il saute (donc sprite perso_saut_normal) j'appuie sur "espace" lors du saut et le sprite change (donc sprite perso_saut_perception).
Que me conseiller vous? gardez un objet pour le perso et jouer avec les sprites pour les états normal et perception? ou bien carément faire des objets par état, un objet perso_normal et un objet perso_perception.
Sa a l'air simple comme sa, mais sachant que 2 touches doivent etre activer par moment me bloque.. (touche gauche + espace par exemple pour changer d'etat en courant)
Merci de m'éclairer je suis completement bloquer ><. Cdlt.
Dernière édition par Gumboy le Lun 8 Oct 2012 - 12:09, édité 1 fois |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: [Résolu] Etat Sprite ? Dim 7 Oct 2012 - 18:08 | |
| Bonjour et soi le bienvenu sur le cbna Je te conseille de surtout tout faire en un seul objet, sinon tu risques de vraiment te compliquer la vie! Je vais te proposer une solution : À chaque endroit où tu prévois de faire un changement de sprite, fais une petite condition, en fonction d'une variable indiquant l'etat du personnage (normal ou perception, soit 0 ou 1): - Code:
-
//Changement de sprite quand on appuie sur la touche de saut: if (modeNormal) { sprite_index = spriteSautNormal; } else { sprite_index = spriteSautPerception; } Bien sur, tu auras défini précédemment la variable 'modeNormal' (=0 si on est en perception, à 1 si on est en normal). -------------------------------------------- Si tu cherches une solution plus propre, tu peux stocker l'id des différents sprites dans une ds_grid(2,n), du coup, pour appeller un sprite: sprite_index = (modeNormal , indexDansLaGridDuSpriteDeSaut); Je ne connais pas ton niveau, donc je ne sais pas trop quoi te dire, de plus! |
|
| |
Gumboy Débutant
Messages : 10 Localisation : Dijon
| Sujet: Re: [Résolu] Etat Sprite ? Dim 7 Oct 2012 - 18:29 | |
| Merci pour ta réponse, mais quelque chose me chagrine xD. Le probleme c'est que là, imaginons que je cours et que je change la variable du mode normal pour passer en mode perception, le mode perception changera le sprite seulement lorsque j'aurais arreté de courir et appuyé sur une touche. Ce qui me bloque vraiment c'est, mon personnage cour (avec un sprite d'animation courir en mode normal) et j'appuie sur "espace" par exemple tout en restant appuyer sur la touche left (en course), et la j'aimerais une transition parfaite entre le sprite courrir en mode normal et mode perception (c'est les même sprite quasiment, le mode normal est le perso avec un oeil a moitier fermer, et le mode perception avec l'oeil grand ouvert). Alors, en plus de la variable Modenormal, dans key_pressed(space), est-ce que je doit mettre genre : - Code:
-
if keyboard_pressed(left) && Modenormal=0 { sprite_index = perso_cour_gauche_perception; Modenormal=1; }
if keyboard_pressed(right) && Modenormal=0 { sprite_index = perso_cour_droite_perception; Modenormal=1; } etc...? Ou bien, est-ce qu'il y a un moyen de créer une condition a partir d'un sprite? du genre : - Code:
-
if "sprite_cour_gauche_modenormal" est utilisé { alors je change avec le sprite "sprite_cour_gauche_modeperception" } |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [Résolu] Etat Sprite ? Dim 7 Oct 2012 - 18:52 | |
| Tout simplement if sprite_index=nom_de_ton_sprite Sinon bienvenue sur le cbna ! |
|
| |
Gumboy Débutant
Messages : 10 Localisation : Dijon
| Sujet: Re: [Résolu] Etat Sprite ? Dim 7 Oct 2012 - 19:24 | |
| Ah oui je suis bête xD c'est bon le script marche niquel même si c'est un peu le bordel ^^. - Code:
-
if keyboard_check(vk_left) { if Mode=0 { sprite_index = perso_court_gauche_activ; Mode = 1; } else { sprite_index = perso_court_gauche_none; Mode=0; }}
if keyboard_check(vk_right) { if Mode=0 { sprite_index = perso_court_droite_activ; Mode = 1; } else { sprite_index = perso_court_droite_none; Mode=0; }}
if Mode=0 { if sprite_index=perso_stop_droite_none { sprite_index=perso_stop_droite_activ Mode=1 }} else { if sprite_index=perso_stop_droite_activ { sprite_index=perso_stop_droite_none Mode=0 }}
if Mode=0 { if sprite_index=perso_stop_gauche_none { sprite_index=perso_stop_gauche_activ Mode=1 }} else { if sprite_index=perso_stop_gauche_activ { sprite_index=perso_stop_gauche_none Mode=0 }}
Merci bien ^^ |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: [Résolu] Etat Sprite ? Dim 7 Oct 2012 - 19:29 | |
| Si tu veux un bon conseil, indente ton code, t'y verra beaucoup plus clair |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: [Résolu] Etat Sprite ? Dim 7 Oct 2012 - 20:05 | |
| Pour faire plus simple, essaye ça : Tu crées une variable 'state', pour définir ce que fais ton perso (se tenir, courir, marcher, etc.) Tu crées une variable 'mode' pour définir le mode. Quand tu appuies sur une touche, ça change le state. ´Les conditions, elles se mettent alors avec le draw event : - Citation :
if (mode == NORMAL) { if (state == RUNNING) { draw_sprite(spriteRunningNormal,-1,x,y); } if (state == STANDING) { draw_sprite(spriteStandingNormal,-1,x,y); } } else { if (state == RUNNING) { draw_sprite(spriteRunningPerception,-1,x,y); } if (state == STANDING) { draw_sprite(spriteStandingPerception,-1,x,y); } } |
|
| |
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: [Résolu] Etat Sprite ? Dim 7 Oct 2012 - 20:51 | |
| Bienvenue Gumboy. - Citation :
- même si c'est un peu le bordel ^^.
Prend le temps d'indenter, commenter et organiser proprement ton code. C'est très important. Si tu replonge dedans dans deux mois tu ne comprendras plus ce que tu as fait et tu abandonnera le tout. Voici ce que peut donner ton code avec quelques minutes de réorganisation: - Spoiler:
- Code:
-
//----- Titre ici //Description ici if( keyboard_check(vk_left) ){ //Commentaire ici if( Mode==0 ){ sprite_index = perso_court_gauche_activ; Mode=1; //Comentaire ici }else if( Mode==1 ){ sprite_index = perso_court_gauche_none; Mode=0; } }
//description ici if( keyboard_check(vk_right) ){ //Commentaire ici if( Mode==0 ){ sprite_index = perso_court_droite_activ; Mode=1; //Commentaire ici }else if( Mode==1 ){ sprite_index = perso_court_droite_none; Mode=0; } }
//-----Titre ici
//Description ici if( Mode==0 ) //Commentaire ici if( sprite_index==perso_stop_droite_none ){ sprite_index=perso_stop_droite_activ; Mode=1; //Commentaire ici }else if( sprite_index==perso_stop_gauche_none ){ sprite_index=perso_stop_gauche_activ; Mode=1; }
//Description ici if( Mode==1 ) //Commentaire ici if( sprite_index==perso_stop_droite_activ ){ sprite_index=perso_stop_droite_none; Mode=0; //Commentaire ici }else if( sprite_index==perso_stop_gauche_activ ){ sprite_index=perso_stop_gauche_none; Mode=0; }
(Je n'ai strictement rien changé à ton code, j'ai juste mis au propre et placé des commentaire à des endroits clef.) Nb: Jolie M@d |
|
| |
Gumboy Débutant
Messages : 10 Localisation : Dijon
| Sujet: Re: [Résolu] Etat Sprite ? Lun 8 Oct 2012 - 11:33 | |
| Merci bien, cela fait longtemps que j'ai plus toucher a GM, c'est fou comment on oublie vite certaine fonction ou même de bien organiser ces scripts et pourtant je sait que sa m'avais porté préjudice ><. J'ai encore une minime question, pour éviter le surplus de sprites, y-a t-il une fonction mirror sprite en gml? car bon en passant par l'editeur de sprite sa me rajoute facile 15 frame par coté sachant que j'anime tout, pose de standing, course, saut, tombe etc.. sa me serait bien plus économique d'utiliser une fonction mirror gml plutot que de doubler mon nombre de sprite.. Je crois que sa n'existait pas à l'époque des anciens GM, mais vu les MAJ d'aujourd'hui je demande on ne sait jamais ^^. Merci encore pour votre aide |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Résolu] Etat Sprite ? Lun 8 Oct 2012 - 12:02 | |
| image_xscale a -1, ou draw_sprite_ext avec xscale a -1 |
|
| |
Gumboy Débutant
Messages : 10 Localisation : Dijon
| Sujet: Re: [Résolu] Etat Sprite ? Lun 8 Oct 2012 - 12:09 | |
| Encore merci =D mes sauveurs (a) xD
|
|
| |
Contenu sponsorisé
| Sujet: Re: [Résolu] Etat Sprite ? | |
| |
|
| |
| [Résolu] Etat Sprite ? | |
|