Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Problema con colisión

Iniciado por BrianPr, 22 de Marzo de 2007, 07:44:40 PM

« anterior - próximo »

BrianPr

Hola, antes que nada quiero felicitar a [EX3] por el excelente trabajo :).

Recién hoy empezé con la Dx_lib32 y la verdad que me trabé al intentar saber si dos gráficos están colisionando.
Leí en la documentación pero no entendí casi nada :P.
Espero que me puedan ayudar, intenté con:
MATH_IntersectRect pero no sé como utilizarlo.

Saludos!.-
ww.lemuriaonline.com.ar
www.tech-pc.com.ar

[EX3]

Wenas. En la proxima version de dx_lib32, de la que no cuando sacare tiempo para finiquitar la documentacion y un par de detalles mas, vendran 3 tutoriales sobre el uso de las funciones de colision de la clase dx_system, una de ellas inexistente en la version actual de la pagina.

Te he subido los dos tutoriales soportados por la version actual, el de colision entre cajas y el de punto con la caja, para que los eches un ojo, veras que son la mar de sencillos de usar.

TutColisiones.zip  (16 kb)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

BrianPr

Muuuuchas gracias!!!.
Es de mucha ayuda, saludos!.-
ww.lemuriaonline.com.ar
www.tech-pc.com.ar

kaeris

Hola, soy nuevo y tambien tengo problemas con las colisiones, estuve viendo y no hay forma de saber si 2 trapezoides colisionan?

[EX3]

No, dx_lib32 solo implementa funciones para comprobar intereseciones entre cajas y rectangulos regulares y puntos, pero no con poligonos irregulares o rotados como puede ser mas o menos un trapezoide.

Ahi quizas podrias usar la tecnica de mapa de dureza que consiste en tener una imagen en tonos de colores, en este caso negro y blanco, donde el blanco defina la forma de la figura que dibujas. Este mapa no se dibuja pero se tiene en memoria y lo que se hace es tomando un punto de referencia del objeto a colisionar con la figura si la posicion del punto coincide con algun pixel del colo blanco del mapa de dureza. Esto se usaba mucho por ejemplo en Div2 Game Studio.

Habria otra forma, menos precisa para un trapezoide pero igual valida que seria usar circunferencias de colision, esto se hace calculando el radio del objeto A con el del objeto B. Lo que se calcula es la distancia entre los dos centros de las figuras y si la distancia es menor al radio de la figura es que existe colision. dx_lib32 ofrece una funcion para calcular la distancia entre dos puntos que bien puede servir para este metodo.

Luego existe la colision por pixel, pero ni dx_lib32 la implementa ni seria optimo tal implementacio en Visual Basic 6.0.

Salu2...

P.D.: La API de Windows ofrece un sistema para definir regiones de todo tipo, regulares como irregulares, y funciones para detectar intersecciones entre otras regiones, cajas y puntos. Yo estuve hace tiempo intentando implementar una funcion para esto pero no logre terminarlo. Si buscas informacion en la MSDN via Google encontraras informacion sobre dichas funciones de la API de Windows.
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

kaeris

Anduve buscando la api, la unica que encontre es la de IntersectRect, que es para rectangulos, si sabes cual es, ¿me la podrias decir?

[EX3]

Si te refieres a lo de las regiones via API de Windows que te comente toda la informacion la tienes aqui.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






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.