detección de colisiones es uno de esos viejos, escondido problemas de codificación de un juego. Típicamente la gente toma darkpenguin enfoque de precalcular de alguna manera donde en su mapa estático es y no se puede ubicar. El siguiente paso es encontrar una forma de especificar el mapa de colisión más eficiente.
No desea que su juego haga una tonelada de matemática en respuesta al movimiento del usuario del mouse, necesita ser corto y rápido, por lo que es fundamental realizar un cálculo previo de algo rápido.
Si su mapa es una cuadrícula, entonces tiene su respuesta allí mismo - el mapa de colisión es una matriz 2D precalculada - básicamente una imagen en blanco y negro muy pequeña con un píxel para cada lugar en la cuadrícula. Los píxeles blancos (1) son seleccionables y los píxeles negros (0) no. Solo usa esta matriz 2D de verdadero/falso como búsqueda. Si desea guardar memoria, puede agrupar cada franja de 32 espacios en la cuadrícula en un solo indicador de bit.
Si su mapa no es una cuadrícula, entonces aún desea precalcular las cosas, pero la estrategia es un poco más compleja. La primera posibilidad es realizar cálculos matemáticos como Hitesh para producir un mapa collide de resolución ligeramente superior, y el resto es exactamente como la estrategia de cuadrícula, por ejemplo, si cada bloque de píxeles 4x4 fue una entrada en colisión, entonces, si una torre puede ser colocado es una prueba de si sus coordenadas prueban que están encima de suficientes 1 - puede requerir que el 100% de las pruebas sean 1, o puede dejar que alcancen un poco y digamos que el 75% de las pruebas sean 1.
Si esto todavía no es suficiente detalle, puede hacer estas pruebas de polígono más complejas, pero desea que sean lo más simples posible. Cuando no se utiliza una cuadrícula precalculada, la prueba de colisión 2D más simple es de 2 círculos: se calcula la distancia entre sus centros y se comprueba si es mayor o menor que la suma de sus radios. Si precalcula su camino de monstruos en una estela de círculos, el siguiente paso es dividir esos círculos en ... adivina qué ... una grilla. Esto evita que cada cheque tenga que probar cada círculo en el mapa. Esto le permite tener una gran cantidad de estos círculos en el mapa de colisión, ya que la prueba de colisión es primero una búsqueda de las entradas de la cuadrícula en las que está actualmente la torre, y luego verifica si está colisionando con los círculos más cercanos, en lugar de todo el mapa Es importante tener en cuenta que esta grilla precalculada de listas de círculos a menudo tendrá el mismo círculo en múltiples entradas de cuadrícula vecinas, ya que cada entrada de grilla que contenga cualquier porción de un círculo dado debe tener ese círculo en su lista de verificación en colisión.
Una de las cosas buenas de los primeros 2 enfoques de cuadrícula es que es muy fácil realizar un control de calidad usted mismo: literalmente almacenar el mapa de colisión como una imagen e inspeccionarlo visualmente para asegurar que se ve bien para el mapa en el que se basa. También puede dibujarlo a mano si no desea escribir el código para generarlos.
El enfoque de círculo le proporciona curvas legítimas y puede conducir a detalles de borde de colisión más finos, pero obviamente es más difícil de probar y garantizar que ningún mapa tenga mapas de colisión incorrectos. También es más trabajo escribir la herramienta de generación de mapas.
¡Buena suerte!