Actualmente estoy trabajando en un juego de disparos en 2D, y estoy usando un quad para mis detecciones de colisión. Escribí un cuadriciclo en funcionamiento que empuja correctamente a mis actores hacia los nodos/hojas a los que pertenecen en el árbol. Sin embargo, tengo algunos problemas.QuadTree para detección de colisión 2D
En primer lugar, ¿cómo utilizo mi quadtree para seleccionar contra qué otros objetos debe probar un objeto las colisiones? No estoy seguro de cómo se hace esto.
Lo que genera una segunda pregunta. Digamos que tengo un objeto en un nodo que no es vecino de otro nodo, pero que el objeto es lo suficientemente grande como para abarcar algunos nodos, ¿cómo puedo verificar una colisión real, ya que supongo que el árbol podría considerar que no es lo suficientemente cerca como para colisionar con objetos en un nodo "lejano"? ¿Deberían mantenerse los objetos que no encajan por completo en un nodo en el nodo padre?
En mi juego, la mayoría de los objetos son de diferentes tamaños y se mueven.
He leído un buen número de blogs/artículos sobre quadtrees pero la mayoría solo explica cómo construir un árbol que no es realmente lo que estoy buscando.
Cualquier ayuda/información es bienvenida.
Si el juego que estás haciendo es realmente como el video que vinculaste, no deberías estar usando un índice espacial en absoluto. Una lista de entidades sin clasificar aún será más rápida hasta unos cientos de objetos en movimiento. – SingleNegationElimination
Depende de la colisión, creo ... probablemente sea así para las colisiones basadas en círculos, probablemente no para las basadas en píxeles. Además, para un bajo número de objetos, buscar vecinos en una lista ordenada 1D de entidades suele ser el más rápido, IIRC. Pero implementar un quadtree de trabajo vale la pena por la experiencia pura. (Y también, los shoot'em ups bullet hell-trend pueden tener cientos de objetos en movimiento fácilmente :)) – Kos