2. Tipos de colisiones
Colisión por píxeles.
✔
Comparación color y posición de píxeles.
✔
Aplicar mascara a una imagen.
✔
Convertir píxeles en rectángulos.
Colisiones por geometrías.
✔ Puntos.
✔ Rectángulos.
✔ Círculos.
✔ Linea y polígonos.
✔ Combinaciones.
3. Colisión por píxeles
La colisión por píxeles es muy precisa pero su costo
computacional es muy alto, y se incrementa en proporción de la
calidad de las imágenes que se utilizan.
Comparación color y posición de píxeles:
Se recorre la imagen píxel por píxel obteniendo su posición actual
e ignorando los píxeles del color seleccionado para comparar el
resto de los píxeles de la imagen con otros objetos. En este
ejemplo se ignoran los píxeles morados.
4. Aplicar mascara a una imagen.
Se hace con ayudad de dos imágenes, la primera que es
nuestro personaje y la segunda que es un marco de recorte,
donde ambas imágenes se sobreponen y solo se toman en
cuenta los píxeles que no sean cubiertos por el color negro.
5. Convertir píxeles en rectángulos.
Se buscan cada píxel en la imagen con cualquiera de los dos
anteriores métodos, pero por cada píxel de importancia se crea un
rectángulo que es almacenado en un espacio de memoria y que se
utilizan para verificar si la imagen esta en colisión.
Tan solo este pedazo
de cuerno tiene más de
20 píxeles, esos son 20
rectángulos solo para
calcular este trozo de
imagen.
6. Colisiones de geometrías
Las colisiones por geometrías consisten en calcular y/o comparar la
posición de la figuras y obtener uno o más puntos de intersección
para comprobar si los objetos están en colisión.
Las colisiones geométricas se pueden combinar entre si y con otros
sistemas de detección de colisiones, además de que se pueden
adaptar para lograr la mayor eficiencia posible con respecto de la
aplicación o juego donde se este implementando este sistema.
7. Puntos:
La estructura de un puto es (Posición “X”, Posición “Y”): (X,Y).
Normalmente se utiliza para verificar la posición del puntero y
compararla con otras geometrías principalmente con rectángulos.
Rectángulo:
La estructura del rectángulo es (Posición “X”, Posición “Y”, Tamaño ”X”,
Tamaño Y): (X,Y,Tx,Ty)
Los rectángulos son de los más utilizados en la detección de colisiones
por su bajo costo computacional y su facilidad de implementación.
8. Círculos:
La estructura del circulo es (Posición “X”, Posición “Y”), Radio: (X,Y),r.
Después del rectángulo es el más utilizado, requiere de un costo computacional
ligeramente más elevado que los rectángulos y como una ventaja adicional se
pueden rotar imágenes con cuerpos construidos con círculos sin perder la
convergencia entre la imagen y el cuerpo de círculos.
9. Linea y polígonos:
La estructura de una linea es (Posición1 “X”, Posición1 “Y”),(Posición2 “X”, Posición2
“Y”): (X1,Y1),(X2,Y2)
La estructura de un polígono es (Punto_1,Punto_2,Punto_3,...,Punto_n):
(P1,P2,P3,...,Pn)
La colisión entre lineas y polígonos es de las más precisas pero entre las geometrías
es la que requiere más recursos por lo que se combina con círculos o rectángulos
para minimizar el costo computacional.
Este sistema permite rotar un polígono sin perder precisión y permite crear figuras
muy complejas.
10. ¿Cuál elegir?
Eso depende de la mecánica del videojuego, la precisión que requieran las
colisiones y la plataforma a la que valla dirigido el juego. Si el juego es
sencillo se utiliza un sistema sencillo. Si es un juego de naves donde se
requiere precisión y hay rotaciones lo ideal seria utilizar círculos y polígonos,
si es un juego de plataforma normalmente con rectángulos es suficiente,
para un juego de peleas se pueden combinar rectángulos y círculos
dependiendo de la mecánica que tenga el juego de peleas.
11. Ejemplos
En este ejemplo se utilizan polígonos y
círculos. De esta manera es relativamente fácil
dotar de física al juego como gravedad.