IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SFML Discussion :

Ordre d'affichage d'un personnage en 2D iso


Sujet :

SFML

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 91
    Points : 65
    Points
    65
    Par défaut Ordre d'affichage d'un personnage en 2D iso
    Bonjour.
    Je viens vous demander de l'aide, car je me trouve face à un souci d'affichage dans mon jeu en 2D isométrique.

    Mon jeu est de type "bac à sable" : le terrain est composé de cubes, et le joueur peut en poser et en détruire (à la manière de Minecraft par exemple).
    L'affichage du terrain se fait sans aucun problème, mais là où je coince, c'est un niveau de l'affichage du personnage. Celui-ci doit être affiché entre les cubes du terrain, en fonction de ces "coordonnées 3D".
    Pour ce faire, j'ai découpé le personnage en plusieurs sprites de la taille d'un cube. Pour chaque méthode testée, j'ai généralement eu un bon résultat tant que le personnage ne sautait pas, mais dès que je le fais sauter (et qu'il se colle à un mur de bloc par exemple) le personnage donne l'effet de rentrer dans le mur (un problème d'ordre d'affichage).

    Le seule méthode où j'ai quasiment le bon résultat, c'est celle de la bidouille : j'affiche les morceaux de personnage aux coordonnées normales, et ensuite pour chaque morceau je teste et je décale les coordonnées jusqu'à avoir un affichage correct. Mais le problème c'est qu'il y a un cas où l'affichage bug : quand je suis dans un coin :
    https://dl.dropboxusercontent.com/u/...ns%20titre.png (là j'ai affiché qu'un morceau du personnage, et il est en train de monter)
    J'ai aussi essayé cette méthode : http://www.game-corp.net/topic-438-p...ometrique.html (3e message), mais même sans le saut l'affichage était buggé.

    Je ne vois vraiment plus quoi tester d'autres, et j'en suis même à me demander si ce que je veux faire est possible.
    Pourriez vous donc m'aider, en me donnant une méthode ou des liens ?
    Merci d'avance.

  2. #2
    Membre émérite Avatar de Cirrus Minor
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2014
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2014
    Messages : 953
    Points : 2 612
    Points
    2 612
    Par défaut
    Tu fais comment exactement ? Tu as 3 coordonnées pour le personnage ?
    Par exemple x pour la position "horizontale", y pour la position "verticale" (pour le saut par exemple) et z pour la profondeur ?

  3. #3
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Pour un jeu 2d iso il faut juste afficher dans un ordre affichage , pas par rapport au x,y de ton écran mais de tes coordonné iso , un exemple , x : 0 y : 0 sera afficher devant par rapport a x:1 , y:0 par exemple.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 91
    Points : 65
    Points
    65
    Par défaut
    Désolé d'avoir été imprécis sur ce point, effectivement quand je parle de coordonnées c'est bien les coordonnées isométriques et non les coordonnées relatives à l'écran. (z c'est vers le haut, x vers le bas-gauche et y vers le bas-droite)
    Dans la méthode où ça marche le mieux, les cubes sont affichés en gros avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for (int z = 0; z < 40; ++z)
    {
    	for (int x = 0; x < 100; ++x)
    	{
    		for (int y = 0; y < 100; ++y)
    			// affichage du cube de coordonnées (x, y, z)
     
    		// ici il y a le code concernant l'affichage du personnage, pour l'intercaler entre les cubes
    	}
    }
    La il n'y a aucun problème. Le soucis vient juste des éléments mobiles comme le personnage. Il a en faite des coordonnées générales (je parle toujours de coordonnées iso) permettant de le localiser sur le terrain, et avec ses coordonnées je peux en déduire les coordonnées de chacun de ses sprites le composant.

  5. #5
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Justement tu dois afficher le perso ou il y a les cubes , tu dois bien savoir sur quel cube il est .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for (int z = 0; z < 40; ++z)
    {
    	for (int x = 0; x < 100; ++x)
    	{
    		for (int y = 0; y < 100; ++y)
                    {
    			// affichage du cube de coordonnées (x, y, z) et perso
                    }
     
    	}
    }

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 91
    Points : 65
    Points
    65
    Par défaut
    Ah oui, pardon j'ai décalé le commentaire, c'est bien comme tu dis.
    Mais justement, le problème est de savoir sur quel cube est chaque sprite du personnage. Je sais le faire approximativement, mais quand le personnage n'est pas aligné avec la grille isométrique il s'affiche mal s'il y a des cubes a coté de lui.

Discussions similaires

  1. [SQL] Ordre d'affichage des lignes d'un état
    Par duboisfa dans le forum Oracle
    Réponses: 20
    Dernier message: 28/02/2006, 23h00
  2. [Oracle] Ordre d'affichage de lignes d'une requête
    Par duboisfa dans le forum Langage SQL
    Réponses: 14
    Dernier message: 27/02/2006, 19h05
  3. [Reports 6] Ordre d'affichage des lignes d'un état
    Par duboisfa dans le forum Reports
    Réponses: 2
    Dernier message: 17/02/2006, 16h21
  4. [Débutant] Ordre d'affichage, 2D
    Par YéTeeh dans le forum OpenGL
    Réponses: 4
    Dernier message: 13/06/2005, 19h51
  5. Réponses: 5
    Dernier message: 08/03/2005, 13h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo