Description de l'auteur Bon.
L'affichage des objets est terminé, il n'y en a pas un tas dans le screen car je suis nul en dessin ;P.
Ça a pris un gros travail de merde pour me rendre compte que j'avais écris une formule de merde pour afficher mes objets Lol.
Ouais, parce que bon au début la formule de base pour calculer la superposition des ''tiles'' était calculée ainsi:
Car XNA calcule le Z entre 0 et 1, donc plus le Z est proche de 1 plus la texture est affichée par dessu les autres. Le problème avec cette formule super le fun, c'est que sur ma grille, mes textures s'empilent. Exemple, à la position (12,15) j'ai peut-être 6 textures et la superposition des textures sur la même position n'est pas prise en charge correctement à cause que le Y des textures qui viennent par dessu est plus petit. Alors qu'enfait la texture doit aller par dessu de l'autre d'en dessou. Hummm un screen ça va être mieux pour expliquer =P :
Merci bien pour la qualité d'image.
Donc cette fameuse variable contenent le nombre ''d'étages'' sur une des positions s'appelle F. Et voilà la formule que j'ai decidé de mettre en application pour afficher mes trucs correctement:
1
| Z = (Y / 100000) + ((Y * F) / 100000 ) |
Mais, nouveau problème:
Même avec un Y plus grand, le F a une prioritée toute aussi grande que le Y, donc la texture avec un plus grand F embarque par dessu l'autre même si son Y est plus petit. J'ai pensé élever au carré mon Y pour être sûr qu'il soit prit en compte, mais le nombre devenait trop grand 13453² = ...... Et il était mal pris en compte, pis le Y était trop dur à gérer. Donc j'ai remplacé le Y par le Y en valeur de grille qui va de 1 à 99 au lieu de 1200 à 435849... Et j'ai aussi changer la formule. Car le F peut aller de 1 à 30 et donc cela fais 4 chiffres en tout avec le Y. Donc je peux facilement les placer directements dans un nombre à vergule un à la suite de l'autre avec les Y en avant pour les avoir en priorité et tadam! Finito. La nouvelle formule:
1
| Z = (F / 10000000) + (tile.S / 100000) |
tile.S est la position en Y sur la grille. (12,43)
Exemple: Z = (12 / 10000000) + (43 / 100000) = 0.0004312
Et ça marche parfaitement bien. J'ai aussi apporté d'autres modifications non-visibles, nettoyé le code et blablaba, mais j'ai principalement joué à skyrim alors bon x). Sinon ça reste un projet personnel pour le fun, l'interface n'est pas vraiment intuitive et je vois mal comment je pourrais intégrer ça à rmvx ou autre chose. De toute façon ça ne serait accessible que pour des personnes qui savent un minimum programmer, le fichier xml contient juste le placement des textures et quelques autres variables, le reste doit être programmé, system de déplacement, caméra, etc. Voilà, c'est tout je pense.
|