Messagerie


Grille virtuelle hexagonale

Seyjin
1471 messages
Fusion 2.5 Dev
Exporteur Android Exporteur HTML5 Fusion 2.5+
lundi 28 janvier 2019 à 13:13
Salut salut,

Bon on sait qu’une grille virtuelle avec des tuiles carrées c’est facile à faire. Mais avec des tuiles hexagonale, est ce aussi simple.

Pour définir la position des tuiles, yui. Il suffit de prendre en compte le décalage.
L’inverse par contre (par exemple, définir quelle case la souris pointe) c’est un peu plus compliqué.

Voici un petit essai, pas très précis mais qui marche plutôt bien.
Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
lundi 28 janvier 2019 à 13:48
:bravos
Pit73
1055 messages
Fusion 2.5 Dev
Exporteur iOS Exporteur Android Exporteur HTML5
mardi 29 janvier 2019 à 12:18
excellent !  :love
Seyjin
1471 messages
Fusion 2.5 Dev
Exporteur Android Exporteur HTML5 Fusion 2.5+
jeudi 21 février 2019 à 21:39
Suite au post de Kloug, j’ai essayé d’autres formes de grilles virtuelles. J’ai fait des essais d’une grille carrés penchée et me basant sur l’exemple que j’ai mis ici.
Puis je l’ai adapté au formes hexagonales.

Donc voilà la grille améliorée, la nouvelle méthode est dans la scène 2.
Modifié le jeudi 21 février 2019 à 21:56 par Seyjin
Seyjin
1471 messages
Fusion 2.5 Dev
Exporteur Android Exporteur HTML5 Fusion 2.5+
vendredi 22 février 2019 à 10:55
Je reviens sur le étapes qui m’ont amenées à ce résultat.

Le principe de la grille est que quand la souris n’est pas à la position voulue, c’est à dire au dessus du curseur, deux boucles sont lancées pour déplacer le curseur sur tout l’écran (on peut en faire qu’une seule mais je m’y perd à chaque foi).

Ici, les tuiles font 32×32 et le point chaud est au centre. De par leur forme hexagonales, on considère que ce sont des tuiles rectangulaires de 32×16. Pour comprendre comment placer une tuile sur une grille allez voire les explications de Kloug, il explique ça très bien.



La particularité ici, c’est qu’il faut décaler les tuiles une ligne sur deux. Pour savoir si une ligne est paire ou impaire on fait n mod 2, si le résultat est 1 c’est que n est impaire.

Il suffirait alors d’arrêter les boucles quand la souris est de nouveau au dessus du curseur, mais ça ne marche pas dans une boucle. Dans mon premier exemple, j’ai utilisé la distance entre la position de la tuile (son centre) et celle de la souris. Ça fonctionne relativement bien, mais c’est pas bien précis.

Calculer une zone de collision pour un carré est simple, mais pour un hexagone c’est déjà plus compliqué. Un carré… ok, partons d’un carré.



Prenons un carré penché à 45° inscrit dans une tuile de 32×32. En comptant en horizontal puis en vertical, tous les points de ce carré sont à 32 pixels ou moins par rapport au centre.

Si on étire ce carré pour faire un losange de 64×32 et en comptant 2× en vertical, tous les points sont à 64 pixels ou moins par rapport au centre.

Maintenant si on ajoute une condition qui compte seulement en horizontal, on retrouve notre hexagone du départ.
1 message

mercredi 2 août 2023 à 14:09

Salut,

Pas mal ton essai ! Les tuiles hexagonales, c'est un sacré challenge, surtout pour déterminer quelle case la souris pointe. Un truc qui peut aider, c'est de considérer la grille hexagonale comme une grille carrée décalée. Ça simplifie pas mal les calculs. Pour être plus précis, tu peux essayer une fonction qui transforme les coordonnées du pointeur de la souris en coordonnées de grille. Courage, tu es sur la bonne voie !


visiter mon site : https://www.multi-hardware.com/

Utilisateurs en ligne
  • Aucun utilisateur en ligne
  • 21 visiteurs au total

Derniers messages