Estoy trabajando en un juego que involucrará hexágonos de jadeo .
En este momento, tengo una imagen hexagonal que estoy usando (todos los lados tienen la misma longitud ... encaja en una imagen de 50 px por 50 px).
Soy algo nuevo en C # y realmente nuevo en XNA, pero ¿hay algún tipo de método fácil al que pueda llamar en lugar de hacer una declaración enrevesada basada en puntos y ángulos?
c#
xna
hexagonal-grid
El e
fuente
fuente
Respuestas:
Un hexágono es un rectángulo con esquinas recortadas. La forma en que he visto esto, y he escuchado que la serie Civilization lo hace de esta manera con mapas ortogonales, es crear un mapa de bits con un espacio en blanco (ortogonal o hexagonal) y rojo, verde, azul y amarillo. esquina. (O los colores que quieras)
Hexagonal: o
Ortogonal:
Luego, solo determina en qué rectángulo está el cursor y prueba el color del píxel en esa ubicación. Si es blanco, están flotando sobre ese espacio. Cada otro color se asigna a un desplazamiento, y en su lugar se ciernen sobre ese hexágono. Esta manera es eficiente, requiere poca geometría y puede usarse para cualquier espacio de teselado arbitrario.
fuente
No hay un método XNA que haga una prueba de golpe hexagonal
Este artículo explica cómo escribir una función que realiza la prueba y le brinda la función:
Cómo verificar si un punto está dentro de un hexágono
Aquí hay un resumen de ese artículo:
Y la función que realiza la prueba es la siguiente:
isInside
prueba para el cuadrante local.Vea el artículo para más detalles.
Aquí hay algunas otras fuentes relacionadas útiles:
Coordenadas en mapas de mosaicos basados en hexágonos
¿Hay un punto dentro de un hexágono regular?
fuente
Aquí obtuve un método que puede usarse para detectar clics dentro de cualquier polígono:
Debe dar las esquinas de su hexágono en una matriz vector2 (poli) y la posición en la que se hizo clic (p) para el método.
fuente