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

Auteur Sujet: Hitbox non rectangulaires  (Lu 4711 fois)

0 Membres et 1 Invité sur ce sujet

Alahakan

  • Newbie
  • *
  • Messages: 8
    • Voir le profil
    • E-mail
Hitbox non rectangulaires
« le: Janvier 29, 2015, 10:47:58 pm »
Bonsoir à tous,
J'ai essayé de trouver réponse à ma question sur google mais j'ai rien eu de bien pertinent, donc je voudrais savoir s'il y a un moyen d'avoir des hitbox non rectangulaires, assez simple pour en valoir la peine, parce que si c'est tordu et/ou gourmand, je suppose qu'il vaut mieux diviser la texture pour faire plusieurs rectangles, enfin je ne sais pas à vrai dire, donc j'attends vos réponses avec impatience, merci d'avoir lu !
Cordialement.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Hitbox non rectangulaires
« Réponse #1 le: Janvier 29, 2015, 11:07:27 pm »
C'est quoi "non-rectangulaire" ? Un cercle, un rectangle orienté, un polygone convexe, un polygone quelconque, ... ?
Laurent Gomila - SFML developer

Alahakan

  • Newbie
  • *
  • Messages: 8
    • Voir le profil
    • E-mail
Re : Hitbox non rectangulaires
« Réponse #2 le: Janvier 30, 2015, 12:28:10 am »
je pensais à un polygone quelconque, selon ce qu'on a besoin d'afficher, parce que par exemple concrètement si on a une grosse étoile (je dis ça au pif pour illustrer), comment un bon programmeur doit s'y prendre pour gérer sa hitbox ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Hitbox non rectangulaires
« Réponse #3 le: Janvier 30, 2015, 07:45:56 am »
Je pense qu'il faut utiliser des formes simples (triangle, cercle, rectangle aligné) dans la mesure du possible. Ensuite si tu as besoin de plus, alors il ne faut pas viser plus haut que le polygone convexe ; gérer des polygones concaves est déjà beaucoup plus (trop) complexe.

Pour ton exemple de grosse étoile, je dirais que tu peux utiliser plusieurs rectangles, voire plusieurs triangles.

Après bien entendu il faut voir ce que tu développes exactement, et quels sont tes besoins en terme de précision de collision.
Laurent Gomila - SFML developer

Alahakan

  • Newbie
  • *
  • Messages: 8
    • Voir le profil
    • E-mail
Re : Hitbox non rectangulaires
« Réponse #4 le: Janvier 30, 2015, 07:36:04 pm »
Mais admettons, comment on fait pour chopper une hitbox triangulaire ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Hitbox non rectangulaires
« Réponse #5 le: Janvier 30, 2015, 09:54:37 pm »
"chopper" = ? collision avec un point ? avec un autre triangle ? avec un rectangle ?

Ce serait bien que tu sois précis dans tes posts, qu'on ne passe pas à chaque fois 3 posts supplémentaires à poser des questions pour savoir ce que tu veux dire.
Laurent Gomila - SFML developer

Alahakan

  • Newbie
  • *
  • Messages: 8
    • Voir le profil
    • E-mail
Re : Hitbox non rectangulaires
« Réponse #6 le: Janvier 31, 2015, 02:28:15 am »
Bien bien, soit, donc j'utilise getGlobalBounds pour récupérer mes hitbox, et je me demandais si on pouvait faire autrement pour générer une hitbox, je n'ai pas trouvé de tutoriel dédié aux collisions sur ce site, et quand je cherche sur google je ne trouve que des tutoriels qui parlent de getGlobalBounds.

Mais je me suis rendu compte que selon les objets (j'ai pris une étoile comme exemple), une hitbox rectangulaire n'était pas forcément adaptée, et je me demandais donc comment faisait un bon programmeur pour faire la hitbox d'un objet atypique, tout simplement.

Tu me disais que tu ferais peut être plusieurs triangles sur une étoile, mais je reste débutant (c'est sûrement pour ça que mes posts manquent de précision) et je ne vois pas vraiment comment m'y prendre, par exemple pour tester si le curseur de la souris est sur l'étoile, ou pour faire que mon personnage se cogne contre l'étoile au lieu de marcher dessus.

J'espère que cette fois ci cela aura été assez clair, merci de m'aider en tout cas !

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Hitbox non rectangulaires
« Réponse #7 le: Janvier 31, 2015, 10:01:14 am »
Déjà si ta recherche n'a pas été fructueuse c'est parce que tu t'y prends mal : la gestion de collisions n'a strictement aucun rapport avec SFML ;)

Ensuite, il suffit simplement de trouver le bon algorithme de collision en fonction des deux primitives que tu veux tester. Pour tester un point dans un triangle, tape "point in triangle collision" dans Google. Pareil pour "rectangle polygon collision", etc. Tu peux aussi remplacer "collision" par "contains" ou "intersection" selon le cas. C'est pas plus compliqué que ça.
Laurent Gomila - SFML developer

Alahakan

  • Newbie
  • *
  • Messages: 8
    • Voir le profil
    • E-mail
Re : Hitbox non rectangulaires
« Réponse #8 le: Janvier 31, 2015, 12:01:17 pm »
Ah d'accord merci beaucoup je vais chercher de ce côté là ;)