Detección de Colisiones (2D)
Era claro que tarde o temprano acabaríamos hablando de las colisiones, e los tutoriales anteriores hemos visto como mover texto, imágenes etc… pero de nada sirve mover si no se produce una interacción con el usuario, asi que vamos con las ideas claves de la detección de colisiones.
Por suerte XNA incorpora un sistema bastante fácil de detección de colisiones, hay varias estrategias, yo os cuento la más fácil e inmediata. La idea se trata en envolver los objetos en unos recipientes y comprobar luego si estos recipientes están chocando.
En este ejemplo en concreto usaremos los BoundingBox la idea que os quería dar a entender es la siguiente:

Donde las lineas discontinuas representan los “envoltorios” para comprobar si hay colisión.
Para comprobar si hay colisión entre objetos podemos usar el método Intersecs que devolverá True si hay colisión o false en caso contrario:

Podéis ver en el código fuente más detalles, para dudas y demás dejad un comentario.
Código fuente:
Detectando Colisiones.zip (XNA 2.0)
Detectando Colisiones.zip (XNA 3.0)
Vea también
Javi, creo que te refieres a que cada caja sea un game component no? En ese caso, la clase Caja por ejemplo tendra un objeto que será su boundigBox. Necesitas un método que te diga si dos cajas cualesquiera intersectan, este método lo puedes llamar en el update para que vaya comprobandolo periódicamente, como no se si me habrás entendido te dejo esto a ver si asi se ve mejor:
Public class Caja {
BoundingBox bBox;
….
public boolean estaColisionando (Caja caja2){
return this.bBox.Intersecs(caja2.bBox);
}
}
O algo así parecido, espero que te sirva, saludos!
Como se haría usando un GameComponent para cada textura? Supongo q se declara cada boundingbox en el codigo correspondiente a cada objeto, pero a la hora de saber si se intersectan las cajas, al estar en diferentes ficheros no se como detectarlo.
Gracias, y wenos tutoriales x cierto.
jorge muchas gracias por avisar, ya está corregido… ha sido un fallo tonto mío jeje, espero verte por aquí mas a menudo, saludos!
Primero que nada excelentes tutoriales, =)
Por otro lado he descargado el tuto de deteccion de coliciones , y al compilar me dice que circulo.png no se encuentra en el directorio.
Gracias