AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
-29%
Le deal à ne pas rater :
PC portable – MEDION 15,6″ FHD Intel i7 – 16 Go / 512Go (CDAV : ...
499.99 € 699.99 €
Voir le deal
Le deal à ne pas rater :
Cartes Pokémon 151 : où trouver le coffret Collection Alakazam-ex ?
Voir le deal

 

 Problème changement de sprite

Aller en bas 
2 participants
AuteurMessage
TheStorm
Nouveau
TheStorm


Messages : 5
Projet Actuel : Megablop PF1

Problème changement de sprite Empty
MessageSujet: Problème changement de sprite   Problème changement de sprite EmptyMer 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 Very Happy

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


Messages : 2213
Localisation : Oui

Problème changement de sprite Empty
MessageSujet: Re: Problème changement de sprite   Problème changement de sprite EmptyMer 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;
 }
}

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


Messages : 5
Projet Actuel : Megablop PF1

Problème changement de sprite Empty
MessageSujet: Re: Problème changement de sprite   Problème changement de sprite EmptyMer 2 Oct 2013 - 19: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 *****
Térence


Messages : 2213
Localisation : Oui

Problème changement de sprite Empty
MessageSujet: Re: Problème changement de sprite   Problème changement de sprite EmptyMer 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 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
TheStorm


Messages : 5
Projet Actuel : Megablop PF1

Problème changement de sprite Empty
MessageSujet: Re: Problème changement de sprite   Problème changement de sprite EmptyVen 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)

}
Revenir en haut Aller en bas
Contenu sponsorisé





Problème changement de sprite Empty
MessageSujet: Re: Problème changement de sprite   Problème changement de sprite Empty

Revenir en haut Aller en bas
 
Problème changement de sprite
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Changement de sprite impossible
» code changement de sprite
» Bug de déplacement + changement de sprite
» changement d'animation du sprite
» mmorpg => Changement de sprite

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: