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

Auteur Sujet: Probleme collision TileMap  (Lu 1170 fois)

0 Membres et 1 Invité sur ce sujet

MasterKey

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
Probleme collision TileMap
« le: Janvier 23, 2017, 07:42:45 pm »
Bonjour j'utilise maintement le tilemap , je n'ai pas de probleme pour afficher mes tiles ,ma map es crée tout va bien
mais j'ai du mal a comprendre les collision sur mes Tiles .

J'utilise le code sur  https://www.sfml-dev.org/tutorials/2.0/graphics-vertex-array-fr.php pour ma Tilemap

J'ai regarder le tuto de (Code Made Easy) sur les collision sur les tile mais je ne comprend pas vraiment comment l'inserer dans mon code car c'est vrm differant du code que la sfml propose :/

désoler d'etre si débutant ,c'est triste d'avoir une tilemap mais pas comprendre les collision  ^^''

en esperant que quelqu'un pourrai m'éclaisir un peu sur le sujet ,Merci d'avance!  ;D

AlexisAG

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
    • E-mail
Re : Probleme collision TileMap
« Réponse #1 le: Février 12, 2017, 07:30:44 pm »
Comment veux tu gérer tes collisions en fait ?

Moi j'ai une méthode qui renvoie l'index de mon tile. ensuite avec cette indexx bah je met collision a true ou false.

Voilà ma méthode :
int TileMap::getTextureIndex(sf::Vector2f pos_Player, int level[], int dir)
{
    // dir 0 = gauche | dir 1 = right | dir 2 = up | dir 3 = down
    int x = pos_Player.x;
    int y = pos_Player.y;
    int index=-1;
    switch(dir)
    {
    case 0:
        index = ((x-(x%sizeTexture.x))/sizeTexture.x) + ((((y-(y%sizeTexture.y)) / sizeTexture.y) * p_width));
        break;
    case 1:
        index = ((x-(x%sizeTexture.x))/sizeTexture.x) + ((((y-(y%sizeTexture.y)) / sizeTexture.y) * p_width)) +1;
        break;
    case 2:
        index = (((x+16)-((x+16)%sizeTexture.x))/sizeTexture.x) + ((((y-(y%sizeTexture.y)) / sizeTexture.y) * p_width));
        break;
    case 3:
        index = (((x+16)-((x+16)%sizeTexture.x))/sizeTexture.x) + ((((y-(y%sizeTexture.y)) / sizeTexture.y) * p_width)) + p_width;
        break;
    }
    printf("Index texture %i \n",index);

    return level[index];
}
 

Je ne sais pas si c'est ce que tu veux faire mais bon voilà si ça peut t'aider à comprendre.