Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





MATH_IntersectRect (Una duda...)

Iniciado por Pilton88, 13 de Mayo de 2007, 03:34:26 AM

« anterior - próximo »

Pilton88

Como andan ?
Miren el post de abajo, que alli esta mi duda.
Gracias

Pilton88

Chicos, mejor no se compliquen, les pregunto directamente:
           With a
               .X = Shoot(i).X - Shoot(i).Width / 2 + 10
               .Y = Shoot(i).Y - Shoot(i).Height / 2 + 10
               .Width = Shoot(i).Width - 20
               .Height = Shoot(i).Height - 20
           End With


Esto es un fragmento del procedimiento UpdateShoots(), bueno, yo estaba haciendo un juego similar (sin copiar codigo del matamarcianos), y ponia un msgbox que diga que los objetos colisiaban, pero dicho mensaje me aparecia por primera vez, cuando aun el Shoot no habia tocado el marciano, y dps aparecia dicho mensaje mas de 4 veses (como 5... repito, no estoy hablando del codigo del matamarcianos, ya que dicho codigo anda de 10, sino, que hablo del mio).
Bueno, disculpen mi dura cabeza, pero no le cazo la onda a esto del:
MATH_IntersectRect(a, b).

Ha ... ya que estoy, como me doy cuenta que Recta pasar en cada parametro? uno es de origen, otro de destino, pero no me queda claro a que le llaman dichas palabras.

Saludos, y gracias por leerme... espero sus ayudas.
Sebas

Pilton88

Chicos, mejor no se compliquen, les pregunto directamente:
           With a
               .X = Shoot(i).X - Shoot(i).Width / 2 + 10
               .Y = Shoot(i).Y - Shoot(i).Height / 2 + 10
               .Width = Shoot(i).Width - 20
               .Height = Shoot(i).Height - 20
           End With


Esto es un fragmento del procedimiento UpdateShoots(), bueno, yo estaba haciendo un juego similar (sin copiar codigo del matamarcianos), y ponia un msgbox que diga que los objetos colisiaban, pero dicho mensaje me aparecia por primera vez, cuando aun el Shoot no habia tocado el marciano, y dps aparecia dicho mensaje mas de 4 veses (como 5... repito, no estoy hablando del codigo del matamarcianos, ya que dicho codigo anda de 10, sino, que hablo del mio).
En realidad, yo lo que tengo que hacer es cargar una recta con los datos de dos objetos (por ejemplo el disparo y el marciano), y usar la funcion MATH INTERSECT para ver si colisionan?
Bueno, si es asi, a la recta, le tengo que pasar de valor en X la posicion x del objeto, en y la pos y, en width su anchura... etc?

Bueno, disculpen mi dura cabeza, pero no le cazo la onda a esto del:
MATH_IntersectRect(a, b).

Ha ... ya que estoy, como me doy cuenta que Recta pasar en cada parametro? uno es de origen, otro de destino, pero no me queda claro a que le llaman dichas palabras.

Saludos, y gracias por leerme... espero sus ayudas.
Sebas

PD: DISCULPEN por el doble post xdd

RobiHm

en el ejemplo del matamarcianos tienes una línea comentada que marca la zona de colisión, tanto de la nave como del disparo, descomenta esa línea y verás un cuadrado/rectángulo que delimita la zona de colisión


x,y es la coordenada de arriba a la izquierda de ese rectángulo, width es su anchura y height es su longitud,
por lo tanto la función ya sabe cual es el árena de colisión

si creas dos rectángulos a partir de los dos objetos tendrás 2 zonas, cuando mueves el disparo o la nave, puedes hacerlo donde más te apetezca
compruebas que el rectángulo de la nave colisiona con el proyectil, no tiene más misterio, para ello utilizas la función que has mencionado...

lo del msgbox se debe a que no destruyes o la nave o el disparo al impactar y por lo tanto sigue moviendose a traves de la nave y por lo tanto sigue habiendo colisión...

el disparo que impacta lo sabes porque estás recorriendo todas las naves que hay en el juego buscando colisiones...
y si no lo haces con los disparos sino con las naves, recorres desde todas las naves todos los disparos...

P.D yo creo que deberías estudiar y probar más el código del matamarcianos antes de ponerte a hacer cosas que no comprendes xD
Web : Indómita
Blog : MiBlog
Evobas : Evobas
Kobox : Kobox






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.