Bonjour à tous et tous,
Dans le cadre d'un projet personnel ayant pour but d'approfondir mes connaissances je me suis fixer comme objectif la réalisation d'un moteur isométrique.
A l'heure actuelle j'ai déjà réaliser de petit projets (souvent de test) mettant en oeuvre la 2D et 2D isométrique "simple" (création/affichage d'une carte simple, déplacement d'un personnage, gestion de collision simple etc.).
Cette fois-ci je souhaiterai mettre la barre un petit cran au dessous au travers d'un petit moteur 2D isométrique.
N'ayant pas trouver de réponses concrète à mes interrogations au travers de mes recherches je viens demander votre aide pour éclairé mes petites lanterne.
Une image valant mieux que mille mots voici l'objectif que je désire atteindre:
Nous y retrouvons les principes de base de l'isométrie auxquels nous ajoutons un nouvel élément à savoir la hauteur.
De ce que j'en déduis nous introduisons une composante 'z' à nos éléments.
Pour l'affichage il suffit d'afficher de l'élément le plus éloigné au plus proche (par exemple de bas en haut et de gauche à droite).
Là où je m'interroge concerne la gestion de la hauteur (afficher correctement le personnage (ou autre), représenter dans la vidéo par un bâton) mais aussi la gestion des collisions.
Dans une gestion de collision "simple" on teste si l'on peut traverser ou non la case suivante. Hors dans le cas d'un ajout de hauteur un nouvel élément fait son apparition: la pente.
Dans la vidéo on peut voir deux "types" de pente: celle tenant en un "seul bloc" et celle composer de plusieurs triangle.
De tout cela découle quelques questions:
1) Les éléments composant cette "univers" doivent-ils être "représenter" comme des volumes ? (pour facilité leur manipulation ou la collision ou autre)
2) Comment son gérer les interactions avec des éléments de type pente (ou autre "forme") ?
3) Comment faire pour qu'un élément puisse être "traversable" d'une (ou plusieurs) façon? (Dans la vidéo on peut voir que le bâton bloque contre la pente lorsqu'il la prend de coté mais monte correctement lorsqu'il vient de "face")
Voici ce que compte utilisé pour réaliser se projet
- C++
- SFML (voir Qt)
J'espère avoir étais assez clair dans mes propos au quel cas j'essayerai de répondre au mieux à vos interrogations ^^'
Cordialement
Ps: Désoler si mon message n'est pas dans la bonne section, si besoin déplacez le.
Partager