Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Besoin d'aide collision TileMap--Player  (Lu 3324 fois)

0 Membres et 1 Invité sur ce sujet

OualidH38

  • Newbie
  • *
  • Messages: 46
    • Voir le profil
    • E-mail
Besoin d'aide collision TileMap--Player
« le: Septembre 21, 2013, 09:54:49 am »
Bonjour à tous,

Voilà en fait j'aurais besoin que l'on m'explique comment gérer une collision entre mon tile map et mon sprite (le joueur), je sais gérer les collisions entre 2 sprites mais ma map est dessinée comme ici: http://www.sfml-dev.org/tutorials/2.0/graphics-vertex-array-fr.php
C'est à dire à partir de vertexarray et d'un renderstates auquel j'applique la texture. Je ne sais pas comment gérer les collisions entre des vertexarray et un sprite pouvez m'aider?

Bon week end.

OualidH38

  • Newbie
  • *
  • Messages: 46
    • Voir le profil
    • E-mail
Re : Besoin d'aide collision TileMap--Player
« Réponse #1 le: Septembre 21, 2013, 10:40:27 pm »
Personne n'a une petite idée?  :D

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Besoin d'aide collision TileMap--Player
« Réponse #2 le: Septembre 21, 2013, 10:52:57 pm »
Si ton niveau est une grille 2D, et que les collisions se font par cases pleines (et pas au pixel près), alors tu n'as qu'à avoir par exemple un tableau 2D de booléens, représentant le fait qu'une tile est traversable ou non. Ensuite pour tester c'est enfantin, tu récupères la position de ton personnage en terme de case et tu vérifies dans ton tableau.
Laurent Gomila - SFML developer

OualidH38

  • Newbie
  • *
  • Messages: 46
    • Voir le profil
    • E-mail
Re : Besoin d'aide collision TileMap--Player
« Réponse #3 le: Septembre 21, 2013, 11:08:04 pm »
Ah oui merci j'y avais pas pensé, mais si plus tard je souhaite gérer des pixel perfect collisions comment devrais je m'y prendre?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Besoin d'aide collision TileMap--Player
« Réponse #4 le: Septembre 22, 2013, 11:02:45 am »
Je ne vais pas te pondre la méthode là comme ça ;)

D'une part ça dépend de ce que tu veux faire, de comment est organisé ton code. D'autre part il existe plusieurs façons de faire. Donc fais des recherches, lis des articles, expérimente par toi-même, ... tout ne se résout pas magiquement sur les forums.
Laurent Gomila - SFML developer

OualidH38

  • Newbie
  • *
  • Messages: 46
    • Voir le profil
    • E-mail
Re : Besoin d'aide collision TileMap--Player
« Réponse #5 le: Septembre 26, 2013, 07:24:20 pm »
Oui je comprends tout à fait  ;D

J'ai essayé avec la technique du tableau, mais je n'arrive pas à faire en sorte de récupérer la position du sprite et de voir si elle est identique avec celle du tableau à 2 dimensions, peux tu y jeter un oeil et me dire si je suis sur la bonne voie s'il te plaît:

donc j'initialise mon tableau isTouching[15][63] avec des 0 et des 1 juste au dessus de ce bout de code:

 for(int i=0; i<15; i++)
    {
        for(int j=0; j<63; j++)
        {
            if(isTouching[i][j] = 1)
            {
                mPlayer.setPosition(mPlayer.getPosition().x, i*32 - mPlayer.getOrigin().y);
                touching = true;
            }
            else
                touching = false;
    }

Pour la collision pour l'instant j'essai juste de gérer la collsion sur l'axe y, touching est un bool qui me permet de savoir si je dois appliquer la gravité et donc faire en sorte que mon sprite chute à l'affichage lorsque que la variable est en false.

 Mon problème est que je met mon personnage dans la position (100, 100) au debut donc il dois chuter jusqu'à atteindre le sol, et bien au lancement du programme mon sprite disparaît et réapparaît au niveau du sol, et les collisions ne sont gérer qu'avec le sol et pas avec la petite plateforme, cela fait quelques jours que je me creuse la tête et je bloque un peu. Je ne cherche pas de correction de code, juste un aiguillement  :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Besoin d'aide collision TileMap--Player
« Réponse #6 le: Septembre 26, 2013, 07:39:30 pm »
Je ne comprends pas ton algorithme. Ton tableau isTouching représente quoi ?

Sinon, il faut un == dans la condition, pas un =.
Laurent Gomila - SFML developer

OualidH38

  • Newbie
  • *
  • Messages: 46
    • Voir le profil
    • E-mail
Re : Besoin d'aide collision TileMap--Player
« Réponse #7 le: Septembre 27, 2013, 10:25:15 am »
Mon tableau isTouching est un tableau qui représente l'endroit sur l'écran ou une tile de la map est présente, ainsi 0 signifie aucune tile et 1 signifie qu'il y a une tile à la position (j*32, i*32).

Merci pour le == j'avais pas fait gaffe  ;D

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Besoin d'aide collision TileMap--Player
« Réponse #8 le: Septembre 27, 2013, 10:42:32 am »
Dans ce cas ton code n'a aucun sens. Tu ne fais aucun test là, tu changes juste la position de ton joueur pour chaque case qui contient une tile -- uniquement la tout dernière sera prise en compte.

Essaye déjà de trouver un algorithme qui tient la route sur papier, et ensuite tu pourras t'atteler à son implémentation.
Laurent Gomila - SFML developer

OualidH38

  • Newbie
  • *
  • Messages: 46
    • Voir le profil
    • E-mail
Re : Besoin d'aide collision TileMap--Player
« Réponse #9 le: Septembre 27, 2013, 11:05:10 am »
Ok merci pour ton aide  ;)

 

anything