| | Problème changement de sprite | |
| | Auteur | Message |
---|
TheStorm Nouveau
Messages : 5 Projet Actuel : Megablop PF1
| Sujet: Problème changement de sprite Mer 2 Oct 2013 - 15:34 | |
| Yop, Je commence le GML et la j'ai un petit problème. Je veux que quand mon perso principal ( "obj_Perso" ) touche l'interrupteur ( "obj_ground_red_interuptor1" ) , ce dernier change de sprite (que "spr_ground_red_interuptor1_off" devienne "spr_ground_red_interuptor1_on"). Donc ça j'y arrive. Mais après je veux que l'objet retrouve son sprite d'origine ("spr_ground_red_interuptor1_off" ), et ça je n'y arrive pas. Je fait : Collision obj_Perso - Code:
-
sprite_index=spr_ground_red_interuptor1_off; image_index=0; image_speed=0.25;
if (instance_place(x,y,obj_Perso) ) { sprite_index=spr_ground_red_interuptor1_on; image_index=0; image_speed=0.25; }
else
{ sprite_index=spr_ground_red_interuptor1_off; image_index=0; image_speed=0.25; } J'ai essayer de mettre le code dans d'autre Event (create, draw...) mais souvent il ne change pas le sprite, ou ne l'affiche même pas. Je cherche depuis une heure, et j'ai toujours rien trouvé. Merci de m'aider si vous avez le temps TheStorm |
| | | Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Problème changement de sprite Mer 2 Oct 2013 - 16:29 | |
| dans collision : - Code:
-
if(sprite_index==spr_ground_red_interuptor1_off){ sprite_index=spr_ground_red_interuptor1_on; }else{ sprite_index=spr_ground_red_interuptor1_off; } Par contre le problème c'est que là il va faire que passer de on à off et inversement, donc faudrait faire une variable alreadyMeeting que tu met à true quand ia collision et à false si ia pas (dans le step), puis dans avant le code que je t'ai passé vérifier que le alreadyMeeting est bien égal à false... Mais bon c'est ******, puis même, niveau jouabilité, bah c'est moyen ; vaut mieux faire une touche dédiée : dans l'event key press <laToucheChoisie> de ton héros : - Code:
-
interrupteur=instance_nearest(x,y,objInterrupteur); if(place_meeting(x,y,interrupteur)){ if(interrupteur.sprite_index==spr_ground_red_interuptor1_off){ interrupteur.sprite_index=spr_ground_red_interuptor1_on; }else{ interrupteur.sprite_index=spr_ground_red_interuptor1_off; } } |
| | | TheStorm Nouveau
Messages : 5 Projet Actuel : Megablop PF1
| Sujet: Re: Problème changement de sprite Mer 2 Oct 2013 - 19:47 | |
| Merci beaucoup, le code marche Mais j'ai pas tout très bien compris, tu pourrais détailler le code ? Genre dire qu'est ce qui fait quoi ... J'ai aucune idée de ce qu'est place.meeting et le meetingAlready par exemple. Et aussi j'ai pas très bien compris ça >_< : - Térence68 a écrit:
- Par contre le problème c'est que là il va faire que passer de on à off et inversement, donc faudrait faire une variable alreadyMeeting que tu met à true quand ia collision et à false si ia pas (dans le step), puis dans avant le code que je t'ai passé vérifier que le alreadyMeeting est bien égal à false...
Répond moi si tu a le temps, sinon c'est pas grave, l'important c'est que le code marche. EDIT : Nouveau problème... Ceci ne marche pas : - Code:
-
if (sprite_index==spr_ground_red_interuptor1_on) { instance_create(224,288,obj_block) instance_create(256,288,obj_block) instance_create(288,288,obj_block) instance_create(320,288,obj_block) instance_create(352,288,obj_block) instance_create(384,288,obj_block) instance_create(416,288,obj_block) instance_create(448,288,obj_block) position_destroy(192,224) position_destroy(192,256) } Alors que je vois bien que le sprite_index est bien égal au sprite on. Si quelqu'un peut me dire pourquoi. Je testerais ça demain, j'arrête game maker pour aujourd'hui. |
| | | Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: Problème changement de sprite Mer 2 Oct 2013 - 22:52 | |
| Bah le code là remplace l'histoire du alreadyMeeting, donc je t'explique calui-là : - Code:
-
interrupteur=instance_nearest(x,y,objInterrupteur); // interrupteur est donc égal à l'interrupteur le plus proche du héros if(place_meeting(x,y,interrupteur)){ // si le héros est en collision avec interrupteur, alors ... if(interrupteur.sprite_index==spr_ground_red_interuptor1_off){ // si il est off... interrupteur.sprite_index=spr_ground_red_interuptor1_on; // on passe à on }else{ // sinon... interrupteur.sprite_index=spr_ground_red_interuptor1_off; // on passe à off } }
Sinon pour l'autre problème, t'es sur que le code est bien exécuté depuis l'objet interrupteur ? Sinon effectivement ca marche pas La doc est dispo à cette adresse : gamemaker.info |
| | | TheStorm Nouveau
Messages : 5 Projet Actuel : Megablop PF1
| Sujet: Re: Problème changement de sprite Ven 4 Oct 2013 - 19:45 | |
| Yo, encore un prolème (décidément...) J'aimerais que les position_destroy ne se fassent qu'une ne se fasse qu'une fois, parceque la ils suppriment tout à l'infini, donc tout ce qui passe dedans est supprimer - Code:
-
if (sprite_index==spr_ground_red_interuptor1_on) { instance_create(224,288,obj_block) instance_create(256,288,obj_block) instance_create(288,288,obj_block) instance_create(320,288,obj_block) instance_create(352,288,obj_block) instance_create(384,288,obj_block) instance_create(416,288,obj_block) instance_create(448,288,obj_block) position_destroy(192,224) position_destroy(192,256) } else if (sprite_index==spr_ground_red_interuptor1_off) { position_destroy(224,288,) position_destroy(256,288,) position_destroy(288,288,) position_destroy(320,288,) position_destroy(352,288,) position_destroy(384,288,) position_destroy(416,288,) position_destroy(448,288,) instance_create(192,224,obj_block) instance_create(192,256,obj_block)
} Merci d'avance EDIT En fait j'ai trouvé mais je suis presque sur que l'on peut faire plus court. Dite moi SVP J'ai créé deux nouveaux blocks et j'ai fait comme ça - Code:
-
if (sprite_index==spr_ground_red_interuptor1_on) { instance_create(224,288,obj_block_destroy_interrupteur_ground_red_interuptor1) instance_create(256,288,obj_block_destroy_interrupteur_ground_red_interuptor1) instance_create(288,288,obj_block_destroy_interrupteur_ground_red_interuptor1) instance_create(320,288,obj_block_destroy_interrupteur_ground_red_interuptor1) instance_create(352,288,obj_block_destroy_interrupteur_ground_red_interuptor1) instance_create(384,288,obj_block_destroy_interrupteur_ground_red_interuptor1) instance_create(416,288,obj_block_destroy_interrupteur_ground_red_interuptor1) instance_create(448,288,obj_block_destroy_interrupteur_ground_red_interuptor1) if (instance_exists(obj_block_destroy2_interrupteur_ground_red_interuptor1) ) { position_destroy(192,224) position_destroy(192,256) } } else if (sprite_index==spr_ground_red_interuptor1_off) { if (instance_exists(obj_block_destroy_interrupteur_ground_red_interuptor1) ) { position_destroy(224,288,) position_destroy(256,288,) position_destroy(288,288,) position_destroy(320,288,) position_destroy(352,288,) position_destroy(384,288,) position_destroy(416,288,) position_destroy(448,288,) } instance_create(192,224,obj_block_destroy2_interrupteur_ground_red_interuptor1) instance_create(192,256,obj_block_destroy2_interrupteur_ground_red_interuptor1)
} |
| | | Contenu sponsorisé
| Sujet: Re: Problème changement de sprite | |
| |
| | | | Problème changement de sprite | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |