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

Auteur Sujet: Maps Isométriques Questions  (Lu 1737 fois)

0 Membres et 1 Invité sur ce sujet

yovano_c

  • Newbie
  • *
  • Messages: 40
    • Voir le profil
    • E-mail
Maps Isométriques Questions
« le: Août 25, 2016, 08:44:15 pm »
Bonsoir,
J'ai eu beaucoup de problèmes avec mon implementation de maps isométriques. A première vue tout vas bien sauf que j'ai des problèmes avec les collisions.
J'aimerais pour m'aider dans les tests de collisions afficher le RectangleShape de mon tile "mur" pour l'instant. sauf que je ne comprend pas comme dessiner le RectangleShape de ces tiles isométriques sachant que mes tiles font 53*36 :

J'ai fait:

float size = sqrtf(powf((53 / 2), 2) + powf((36 / 2), 2));
mRect.setSize(sf::Vector2f(size, size));
mRect.rotate(45.f);

Mais ça me donne ça:


J'ai donc plusieurs questions:

1/ Comment dessiner mes RectangleShape des tiles isométriques en fonction de la hauteur et la largeur de ces tiles pour gérer les collisions parfaitement?
2/ Comment je pourrais implémenter mon système de collision correctement? Parce qu'en regardant dans la console (sur le screen) on voit que le player est en collision avec le tile bleu (parce qu'en effet le RectangleShape du player passe bien au dessus de celui du tile 'mur'. alors qu'en realité le player se trouve quand même beaucoup plus loin devant..

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Maps Isométriques Questions
« Réponse #1 le: Août 25, 2016, 08:48:16 pm »
En général j'essaye d'éviter les double-posts français/anglais, car cela disperse les réponses, et 99% de ceux qui pourront te répondre ici le feront également sur le forum anglais.
« Modifié: Octobre 11, 2016, 10:27:09 am par Laurent »
Laurent Gomila - SFML developer

brunnerant

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
    • E-mail
Re : Maps Isométriques Questions
« Réponse #2 le: Octobre 11, 2016, 10:24:56 am »
Si j'ai bien compris, ce que tu essaie de faire, c'est d'afficher la hitbox de ta tile. Jusque là, tout va bien, sauf que ta tile n'est pas rectangulaire, mais correspond plutôt à un losange  :D. Donc inutile d'essayer de dessinner ton sf::RectangleShape, tu n'y arrivera pas. La solution c'est d'utiliser une sf::VertexArray de type sf::Quads, comme décrit dans le tuto SFML sur les tableaux de sf::Vertex.
Pour une collision point-losange, ce n'est pas sorcier, cela peut être simplifié à deux collisions point-triangle, donc pas de problème de ce côté-là.

Ta deuxième question maintenant. Il suffit de définir l'origine du sprite de ton personnage à ses pieds. Donc, si tu as un perso de 50px de haut et de 10px de large tu pourrais faire quelque chose comme :
spritePerso.setOrigin(5,50);
pour que sa position soit relative à ses pieds et non à sa tête, comme c'est le cas par défaut.

J'espère avoir répondu à ta question, et si ce n'est pas le cas, je  m'en excuse !

 

anything