Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1079 connectés 

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  Jeu de plateforme AS3 (problème de passage de niveau)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Jeu de plateforme AS3 (problème de passage de niveau)

n°2248529
latarteen
Posté le 15-01-2015 à 19:50:08  profilanswer
 

Bonjour à tous !
 
Déjà, merci pour l'ensemble des informations qui m'ont régulièrement aidées dans de longue soirées de perdition, dans l'océan du bug !
 
Si je post aujourd'hui, c'est pour un problème (comme le titre l'indique) sur un petit jeu de plateforme AS3, pour lequel je n'ai pas trouvé de solution dans les recherches de topic... En fait, pour résumer, je me suis basée sur un tuto bien sympathique pour découvrir l'as3, après avoir appris uniquement l'as2 cette année, à savoir : http://forums.mediabox.fr/wiki/tut [...] rcade-base
 
J'ai suivi à peu près toute la marche à suivre, sachant que je ne veux pour l'instant pas particulièrement de présence d'ennemis, d'objets et tout le tintouin, je n'ai réinvesti que ce dont j'avais besoin : les tableaux, les variables, le personnage et ses collisions, les déplacements...
Maintenant, j'ai besoin que mon personnage passe à un niveau suivant : malheureusement, je ne comprends pas la marche à suivre, le tuto que j'avais commencé à suivre m'a complètement perdue...
 
Je vous joins mon .fla, j'espère que ce n'est pas trop brouillon... (ne pas se soucier de l'objet animé à l'arrache qui est censé représenter une cascade d'eau, c'était juste un test sans utilité pour le moment) : https://mon-partage.fr/f/95W6QzkJ/
 
 
En gros, ce que j'ai tenté, c'est dans le calque "déplacement" :  
 
À la base, j'ai ça :  
 

Code :
  1. if (map[L][C]>=1) {        // si le bord renconte un bloc solide en latéral
  2.   X = perso.x = C*T+16-T*dx;     // colle le perso au bord du bloc
  3.  }


 
 
 
J'ai voulu rajouter cette ligne pour dire que mon perso, s'il est en contact avec des blocs portant un indice entre 1 et 13, entre en collision // ainsi, mon bloc porte, qui porterait l'indice 14, pourrait entrer en contact direct (ensuite j'ai voulu bricoler à partir de ça, mais je ne connais que la solution avec un hitTest qui conduit à la frame 2 en cas de contact, qui ne fonctionne pas ici...) :
 

Code :
  1. if (map[L][C]>=1) || (map[L][C]<14) {        // si le bord renconte un bloc solide en latéral
  2.   X = perso.x = C*T+16-T*dx;     // colle le perso au bord du bloc
  3.  }


 
 
J'espère pouvoir me débloquer, sinon je repasserais tout en AS2  :sweat:  
Merci !

mood
Publicité
Posté le 15-01-2015 à 19:50:08  profilanswer
 

n°2248538
Terminapor
I'll see you rise.
Posté le 15-01-2015 à 22:34:50  profilanswer
 

C'est quoi ton L/C ? Coordonnées de l'objet sur ta grille ? Et le T ?
 
Idem pour le dx, c'est la vitesse en x ?
 
Tes IDs de map correspondent à quoi ?


---------------
Perhaps you don't deserve to breathe
n°2248600
latarteen
Posté le 16-01-2015 à 17:02:25  profilanswer
 

T, c'est l'élément "tuile" que j'utilise dans mon tableau :

Code :
  1. var T:int = 32       // taille d'une tuile (carré)


 
dx, c'est le déplacement de mon perso sur x :

Code :
  1. perso.x += vitesse*dx;         // déplace le perso sur X


 
 
L et C sont les données qui m'ont permis de provoquer les collisions (L pour lignes, C pour colonnes) :

Code :
  1. var L:int;           // ligne (grille) du point bas du perso
  2. var C:int = (X+16*dx)/T;       // côté (grille) du perso concerné par la collision


 
 
Les ids de map, c'est qu'est ce que j'associe au 1 ou au 14 dans mon extrait de code ? si c'est ça, ce sont de simples tuiles colorées de 32*32px, qui de 1 à 13 sont de couleurs différentes ; la tuile suivante (14) est censée être la porte qui permet de passer au niveau suivant !

n°2248678
gustave002
Posté le 18-01-2015 à 17:18:13  profilanswer
 

salut
tout d'abord pour aller a l'image 2 il faut quelle existe donc la créer. pour que l'on voit que tu es sur l'image 2 met un texte et il faut retirer grille et perso et

 

removeChild(grille)      // retire le décor
removeChild(perso)       // retire le perso
removeChild(fond)

 

après tu passes au niveau supérieur si ton perso est arrivé au bord droit de ta scene donc si perso.x est == 624

 

function deplacement(dx:int):void{
 
 perso.x += vitesse*dx;         // déplace le perso sur X
 
 var Y:Number = perso.y        // raccourci de programmation pour perso.y
 var X:Number = perso.x        // raccourci de programmation pour perso.x
 var L:int;           // ligne (grille) du point bas du perso
 var C:int = (X+16*dx)/T;       // côté (grille) du perso concerné par la collision
     // vérifies toutes lignes (grille) sur lesquelles se tient le perso
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
///////////////////////////////////
  if (perso.x == 624 ) {      
   gotoAndStop(2);        // envoyer au niveau suivant (lvl 2)
  }
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////
/////////////////////////////////
 // latéral      
 for (L=(Y-16)/T; L<Y/T+1; L++) {     // vérifies toutes lignes (grille) sur lesquelles se tient le perso
  if (map[L][C]>=1) {        // code OK de base : si le bord renconte un bloc solide en latéral
  //if (map[L][C]<9) {        // TEST POUR LA SORTIE : désactiver la collision avec la tuile 9 pour laisser le perso toucher la tuile déclanchant la sortie
   X = perso.x = C*T+16-T*dx;     // colle le perso au bord du bloc
  }
 }

 

je mets le fla modifier ici                            http://www.citroen-france-tours-no [...] 0H30-1.fla

 

a savoir j'ai un peu de mal avec ta façon de disposer ton code.

 

@+ gustave02


Message édité par gustave002 le 18-01-2015 à 17:21:04
n°2248682
latarteen
Posté le 18-01-2015 à 18:31:01  profilanswer
 

... Wouahou, en fait, c'était pas si sorcier... J'en avais fait une montagne infranchissable :pt1cable:  
 
En tout cas un énorme merci, et en plus de corriger directement mon fichier, c'est ultra cool !
 
Et qu'est-ce qui est étrange dans mon code, par curiosité ? Je sais que c'est un peu du bricolage, je suis étudiante en design donc même si on apprend un peu de code dans ce cadre, c'est pas forcément évident de comprendre toute la logique donc on agence ça comme on le sent :-p
 
Merci encore, je vais pouvoir me remettre dessus l'esprit tranquille !

n°2248685
gustave002
Posté le 18-01-2015 à 18:40:31  profilanswer
 

tu met du code partout.
alors que moi j'essayerais d'avoir un calque  action. calque qui centralise tout le code.
je pense plus simple a lire.
 
quand tu mets perso pour personnage OK cool simple on voit de quoi ça parle.
 
mais tu X:number si je me souviens dangereux peut amener a des confusion avec x pas cool dans la compréhension.
 
@+ Gustave02

n°2248686
latarteen
Posté le 18-01-2015 à 19:13:11  profilanswer
 

Ok j'essaierais de remédier à tout ça, merci encore :-)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  Jeu de plateforme AS3 (problème de passage de niveau)

 

Sujets relatifs
Problème du voisin le plus proche sur RProblème d'algo pour le jour suivant d'une date
[POWER SHELL] Problème d'import de module Active DirectoryProblème sur l'entame de ce code
[PHP] Url Rewriting et passage de variables GET probleme producteur consommateur
Problème d'envoi de mail avec formulaire Ajax +JsonProblème avec tuple sur Python 3.4.1
Débutant AS3 recherche une correction pour un premier scriptC: probleme de compil sur un typede => ferror: syntax error before ''
Plus de sujets relatifs à : Jeu de plateforme AS3 (problème de passage de niveau)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR