AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -20%
-20% sur le Lot de 2 écrans PC GIGABYTE ...
Voir le deal
429 €

 

 Jump entre deux séquences. GMS2

Aller en bas 
AuteurMessage
Caly
Utilisateur confirmé: Rang ****
Caly


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.

Jump entre deux séquences. GMS2 Empty
MessageSujet: Jump entre deux séquences. GMS2   Jump entre deux séquences. GMS2 EmptySam 18 Sep 2021 - 11:34

Yho, je viens de télécharger GMS2 en voyant qu'il était gratos et que je voulais voir après plusieurs années sans toucher à GM ce qu'ils ont pondus chez YYG.

J'ai vue le nouveau concept de "séquences".

Du coup je suis partis sur un petit truc simple et je tombe direct sur un problème incompréhensible.

Mise en situation :

J'ai crée deux séquences, une avec un FADE_OUT et une avec un FADE_IN.
à la fin des deux séquences j'appel la fonction "transitionEnd".

J'ai crée aussi deux room : Room1 et Room2 (noms très recherchés).

et enfin ce script :
Code:

//Initialisation des globales utilisees dans les fonctions de transition.
   global.transition_active = false;
   global.transition_room_target= -4;
   global.transition_out = -4;
   global.transition_in = -4;
   global.transition_next_type = -4;
   
//##################################################################\\


//Creation du calque "transitionS" avec la transition "_type".
function transitionLayerCreate(_type){

   //Suprime la transition en cour s'il y en a une.
   if( layer_exists("_transitions") ) layer_destroy("_transitions");
   
   
   //Creation du calque.
   var _layer = layer_create(-9999, "_transitions");   
   
   
   //Ajout de la transition sur le calque.
   return layer_sequence_create( _layer, o_Camera.x, o_Camera.y, _type);
   
}


//##################################################################\\



//lance une paire de transition avec un changement de room ou non.
function transitionRoomLaunch(_room_target, _type_out, _type_in){

   //S'il n'y a pas de transition en cour.
   if( !global.transition_active ){
            
      //Sequence de la transition OUT
      global.transition_out = transitionLayerCreate(_type_out);
            
      //Sequence de la tansition IN dans la room de destination.
      if( _room_target >= 0 ){
         layer_set_target_room(_room_target);
            global.transition_in = transitionLayerCreate(_type_in);
         layer_reset_target_room();
      
      
      //S'il n'y a pas de changement de room on stoque le type de transition.
      }else{   global.transition_next_type = _type_in; }
      
            
      global.transition_room_target = _room_target; //room_de destination
      global.transition_active = true; //transition en cour
      
      
      return true; //S'il n'y avait pas de transition en cour.
   }else return false;//S'il y a deja une transition en cour.

}

//##################################################################\\


//Lance une paire de transitions OUT/IN sans changer de room.
function transitionLaunch(_type_out, _type_in){   transitionRoomLaunch(-4, _type_out, _type_in); }


//##################################################################\\


//Fonction appelee en fin de sequence.
function transitionEnd(){   
   
   
   //Si on est sur un type OUT (premiere phase)
   if( global.transition_out == self.elementID ){
         
         //Si on est sur un changement de room
         if( global.transition_room_target >= 0 ){
            room_goto(global.transition_room_target);
            global.transition_room_target = -4;
         
         
         //Si on ne change pas de room
         }else{   global.transition_in = transitionLayerCreate(global.transition_next_type);   }
         

   //Si c'est la phase 2, on stoppe et on libere la memoire.
   }else if( global.transition_in == self.elementID ){      
   
      layer_sequence_destroy(self.elementID);
      global.transition_active = false;
      layer_destroy("_transitions");
   }

}

Et dans l'objet o_Main :

appuis sur espace = transitionRoomLaunch(_room_target, _type_out, _type_in);

Ca marche nickel pas de soucis.

et appuis sur entré = transitionLaunch(_type_out, _type_in);
Et c'est là le soucis, j'ai un "saut" entre les deux séquences, j'ai testé plein de trucs, lus la doc, rien n'y fait je trouve pas de soluce.


NB: j'attend pas forcement une solution mais si ça peut lancer un topic sur le forum Wink
Revenir en haut Aller en bas
 
Jump entre deux séquences. GMS2
Revenir en haut 
Page 1 sur 1

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