11-07-2013, 02:55 PM
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.
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.