Colisiones
Existen 2 tipos a priori y a posteriori.
En el curso nos centraremos en calcularlo a posteriori.
También existen distintas formas de identificar la colisión basándonos en las primitivas que forman la escena, por ejemplo:




Su auxiliar que esta obsesionado con Minecraft, necesita de su ayuda para hacer generar el mundo de bloques.
De manera similar al juego, la idea es separa cada zona del mapa en grupos de \(16\times 16\times 16\), para ello tiene una clase MyChunk que extiende de Model. Pero esta incompleta.
Completela creando la clase MyBlock que almacene el tipo de bloque, y dentro de la función init_gpu_data complete la información apropiadamente.
Cree una escena con 4 chunks con 10 bloques cada uno.
Usando la librería colliders cree un CollisionManager y añada los bloques usando el tipo de collider AABB, haga lo mismo con el jugador.
Haga un chequeo de colisiones para cada update de la simulación, donde imprima todas las colisiones ocurridas.
Ahora que obtuvo las colisiones, resuelva las colisiones, de manera posteriori. Para ello analice el caso 2D para la colisión entre dos AABB y determine que es lo que debería ocurrir.
Aumente los bloques a 100 por chunk (o incluso 1000). Esto hace que la simulación corra muy mal, para arreglar esto puede optimizar su código de muchas maneras.
Una de ellas es dividir su chequeo de colisión en 2 fases: la broad phase y la narrow phase, en la primera encuentre los bloques que pueden colisionar con el jugador y en la segunda busque los que realmente lo hagan.
CC3501 — Modelación y Computación Gráfica para Ingenieros