JeuWeb - Crée ton jeu par navigateur
Map isométrique et personnage - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Map isométrique et personnage (/showthread.php?tid=7035)



Map isométrique et personnage - Chtikeke - 11-07-2013

Bonjour.

Alors voila mon problème, je commence à coder un moteur graphique isométrique 2D (ça doit surement déjà exister, mais ça me permet de comprendre les mécaniques du développement de jeux vidéos 2D). Le tout en JavaScript (avec le framework CreateJS) et bien entendu canvas.

J'ai donc 4 classes, Tile, Map Object et Player.

Ma classe Map génère la carte grâce à un fichier XML, mon objet map contient donc des objets Tile. Jusque la tout va, mon plateau se positionne bien. Ensuite les objets (classe Object), ils sont placés dans les tiles, donc ils héritent du placement (index) de la tile donc sur le plateau tout s'affiche correctement (exemple: un arbre qui est donc plus grand qu'une tile ne va pas avoir sa cime derrière les tils du fond).

Mais voila le problème vient du personnage. Si je l'ajoute à la carte il sera au dessus des tils et donc des objets. Si je l'ajoute à une tile, pour les tils du fond ça va aller, mais pas pour les tils de devant lorsqu'il faudra le bouger (quand je vais l'avancer vers le bas il va passer sous les tils).

J'ai donc pensé à trois possibilités :
- La première concevoir 3 couches pour la carte, la première les tils (le sol donc)
- La deuxième les personnages
- Et la troisième les objets

Le problème c'est que les objets seront toujours au dessus du personnages (pour les feuilles de l'arbre ok, mais pour le tronc ?).

La deuxième possibilité serait de modifier l'ordre d'affichage (donc l'index) de tous les éléments à chaque fois que le personnage bouge (je trouve ça un peux lourd).

La troisième, serait de modifier l'ordre d'affichage du personnages lorsqu'il bouge, mais la je nage totalement avec le code (avec EaselJS je n'arrive pas à faire se que je veux avec setChildIndex()), mais la c'est un problème de code donc j'en parlerais pas ici.

Bref comment vous feriez ?

Merci d'avance.


RE: Map isométrique et personnage - Chtikeke - 12-07-2013

Personne pour m'aider ? Sad


RE: Map isométrique et personnage - Xenos - 12-07-2013

Je comprends pas: ton personnage est comme un objet de la carte, il est rattaché à une tile, et donc si les objets sont bien affichés, le personnage l'est bien aussi...

Si le soucis est d'ordre graphique (z-index mal fichu par exemple), des pages de textes seront moins utiles qu'une simple image Wink


RE: Map isométrique et personnage - Ditret - 12-07-2013

Voila comment j'ai procédé pour mon jeu Interstellaires ( adapté avec tes couches )

1) tu dessine toute les casses au sol qui correspond au niveau ( exemple x=3 )
2) Tu dessine les objets puis les joueurs qui sont sur le même niveau.
3) tu dessine la dernières couches qui seras au dessus de tout ( comme les feuilles )
4) tu répètes les étapes 1,2,3 pour chaque X

Mais pour que ça marche il faut que ton tableau de joueurs sois trié sur l'axe des Y.

Exemple avec un layer ( version très simplifié ) :

TrieJoueur();
for(x)
{
for(y)
{
dessinCasses();
}
dessinJoueurCelonsAxeX( x );
}


RE: Map isométrique et personnage - Chtikeke - 13-07-2013

Merci de vos réponses. En fait c'est pas la génération du terrain qui me pose problème : le terrain je le génère ( donc avec une double boucle for x et y) les tiles se positionnent correctement donc pas de problème de z-index. Ensuite je génère les objets et personnage qui son effectivement lier aux tiles (je travail en conteneur avec EaselJS chaque tie est un contenair contenant une image. La Map est un conteneur contenant les tiles. Donc les objets sont dans le conteneur de la tile), ils possèdent donc le même z-index que les tiles. Une image ne servirais pas a grand chose car il n'y a pas vraiment de bug a voir (et que surtout je suis sur mon téléphone ^^). Mon problème c'est de générer dynamiquement le z-index du personnage lorsqu'il bouge sur le plateau.