Jeu de plateforme AS3 (problème de passage de niveau) - Flash/ActionScript - Programmation
Marsh Posté le 15-01-2015 à 22:34:50
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 ?
Marsh Posté le 16-01-2015 à 17:02:25
T, c'est l'élément "tuile" que j'utilise dans mon tableau :
Code :
|
dx, c'est le déplacement de mon perso sur x :
Code :
|
L et C sont les données qui m'ont permis de provoquer les collisions (L pour lignes, C pour colonnes) :
Code :
|
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 !
Marsh Posté le 18-01-2015 à 17:18:13
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
Marsh Posté le 18-01-2015 à 18:31:01
... Wouahou, en fait, c'était pas si sorcier... J'en avais fait une montagne infranchissable
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 !
Marsh Posté le 18-01-2015 à 18:40:31
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
Marsh Posté le 15-01-2015 à 19:50:08
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 :
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...) :
J'espère pouvoir me débloquer, sinon je repasserais tout en AS2
Merci !