AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Problème changement de sprite

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
TheStorm
Nouveau
avatar

Messages : 5
Projet Actuel : Megablop PF1

MessageSujet: Problème changement de sprite   Mer 2 Oct 2013 - 13: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 Very Happy

TheStorm
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: Problème changement de sprite   Mer 2 Oct 2013 - 14: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;
 }
}

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
TheStorm
Nouveau
avatar

Messages : 5
Projet Actuel : Megablop PF1

MessageSujet: Re: Problème changement de sprite   Mer 2 Oct 2013 - 17:47

Merci beaucoup, le code marche Smile

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.
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
avatar

Messages : 2213
Localisation : Oui

MessageSujet: Re: Problème changement de sprite   Mer 2 Oct 2013 - 20: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 Razz
La doc est dispo à cette adresse : gamemaker.info Smile

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
TheStorm
Nouveau
avatar

Messages : 5
Projet Actuel : Megablop PF1

MessageSujet: Re: Problème changement de sprite   Ven 4 Oct 2013 - 17: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)

}
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Problème changement de sprite   

Revenir en haut Aller en bas
 
Problème changement de sprite
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» problème carte cps
» CHANGEMENT DU SYNDICAT A TAZA
» Problème application eyeliner !!!!
» Internet, vecteur de changement, ou non
» Problème de déglutition

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: