Je travaille sur un jeu qui va impliquer des hexagones haletants .
À l'heure actuelle, j'ai une image hexagonale que j'utilise (tous les côtés sont de la même longueur ... elle s'inscrit dans une image de 50 pixels par 50 pixels).
Je suis un peu nouveau pour C # et vraiment nouveau pour XNA, mais y a-t-il une sorte de méthode facile que je peux appeler plutôt que de faire une instruction alambiquée si basée sur des points et des angles?
Réponses:
Un hexagone est un rectangle avec des coins coupés. La façon dont j'ai vu cela, et j'ai entendu dire que la série Civilization le faisait avec des cartes orthogonales, c'est de créer une bitmap avec un espace blanc (orthogonal ou hexagonal), et un rouge, vert, bleu et jaune coin. (Ou quelles que soient les couleurs que vous aimez.)
Hexagonal: ou
Orthogonal:
Ensuite, déterminez simplement le rectangle sur lequel se trouve le curseur et testez la couleur du pixel à cet endroit. S'il est blanc, ils survolent cet espace. Chaque autre couleur est mappée à un décalage et survole cet hexagone à la place. Cette méthode est efficace, prend peu de géométrie et peut être utilisée pour tout espace de pavage arbitraire.
la source
Il n'y a pas de méthode XNA qui effectue un test de hit hexagonal.
Cet article explique comment écrire une fonction qui effectue le test et vous donne la fonction:
Comment vérifier si un point est à l'intérieur d'un hexagone
Voici un résumé de cet article:
Et la fonction qui fait le test se présente comme suit:
isInside
test suivant pour le quadrant local.Voir l'article pour plus de détails.
Voici quelques autres sources utiles utiles:
Coordonnées dans les cartes de tuiles basées sur l'hexagone
Un point à l'intérieur d'un hexagone régulier?
la source
Ici, j'ai une méthode qui peut être utilisée pour détecter les clics à l'intérieur de n'importe quel polygone:
Vous devez donner les coins de votre hexagone dans un tableau vector2 (poly) et la position cliquée (p) à la méthode.
la source