martes, 5 de julio de 2011

Detección de Colisiones 2D

Al momento de desarrollar juegos en visual, lo más importante es detectar colisión entre dos objetos  del formulario. Es muy sencillo, necesitas conocer la posición y dimensiones... y  bla bla bla. A continuación te dejo una función  booleana que recibe dos objetos; en este caso un Picturebox y un Label, el cual si existe colisión devuelte true, de lo contrario false.



Public Function Colission(ByVal a As PictureBox, ByVal b As Label) As Boolean 'si hay contacto retorna True - si no hay contacto retorna False
  
If ((a.Location.X < b.Location.X + b.Width) And (b.Location.X < a.Location.X + a.Width) And (a.Location.Y < b.Location.Y + b.Height) And (b.Location.Y < a.Location.Y + a.Height)) Then
Return True
Else
Return False
End If
End Function

Es importante mencionar que esta función trabaja perfectamente, con rectángulos/cuadrados.



--
Nota: La información contenida en esta publicación, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en la presente publicación.

3 comentarios:

  1. muy bueno ;) mi profesor me dijo ke las colisiones tmbien las podia hacer usando setbounds pero no pude :S haha
    esta manera tmbien funciono :D grasias

    ResponderEliminar
  2. Hola,
    Y si los rectagulos cambiasen de angulo, en funcion del evento del raton,por ejenmplo un juego de estrategia espacial...como detectaria entonces la colision?

    Gracias.

    saludos.

    ResponderEliminar
    Respuestas
    1. Interesante pregunta, antes que nada te recuerdo que .net no esta diseñado para hacer juegos, si necesitas mayor realismo y mejor precisión, te recomiendo programar usando DirectX junto con XNA, los cuales están diseñados para realizar lo que necesitas sin sobrecargar el sistema.

      Eliminar