Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Colisiones En Plataformas

Iniciado por Sacrifai, 07 de Julio de 2005, 11:38:56 AM

« anterior - próximo »

Sacrifai

 Buenas, cuanto tiempo que no habría un thread. Bueno mi pregunta es sobre colisiones en un juego de plataformas. Resulta que sacando la información de un array, dibujo directamente en pantalla los tiles (de 25x25). Por otra parte tengo al prota, todas sus imagenes miden 75x75, en algunas pilla más en otras menos. Me gustaría saber como calculariais las colisiones vosotros  :rolleyes: .

Gracias.

NeLo

 ¿Texturas de NO-potencia de 2? Mal rollo eh. ;)

Pues lo primero que puedes comprobar el colisiones entre rectángulos, con la posición y tamaño de las imágenes.

Después, si la colisión entre bounding-boxes existe, pues currarte una rutina que recorra los píxeles de ambas imágenes, y ver si algún píxel está dentro de los píxeles de la otra.

En la imagen que esté más a la derecha empieza a recorrer sus píxeles desde la izquierda, y de arriba a abajo, y en la otra imagen al revés. En cada línea vertical compruebas. Así puedes ahorrarte alguna comprobación.

Saludos.
Drowning deep in my sea of loathing

Sergio

Cita de: "NeLo"¿Texturas de NO-potencia de 2? Mal rollo eh. ;)
No son texturas, está usando Fenix (SDL)  :P  :P
De todas formas está un poco jodío el tema de hacer un plataformas así con tiles, no? Si cuando hablas de colisiones te refieres al escenario, yo lo que he visto hasta ahora ha sido mediante mapas de durezas... :blink:
Lo que no indica que no se pueda hacer, claro está :lol:  :lol:  
here are only 10 types of people: those who understand binary and those who don't

jazcks

 ya que hablais del tema...
siempre me he preguntado como se resuelven las colisiones cuando el personaje sube o baja por "cuestas", escaleras etc... hablando de plataformas claro.


zupervaca

 si es un mapa de durezas como dicen es comprobar el color de colision, si se hace mediante bloques, normalmente la coordenada Y del personaje se calcula mediante la X mediante una formula dependiendo del angulo de inclinacion y ademas suelen ser diagonales perfectas, tambien existen los bloques de durezas para ahorrar memoria no es muy usado actualmente pero es lo mas correcto y usado hace muchos muchos años jeje

saludos

Sergio

 
Citarya que hablais del tema...
siempre me he preguntado como se resuelven las colisiones cuando el personaje sube o baja por "cuestas", escaleras etc... hablando de plataformas claro.
Pues creo que con lo de las durezas se hace todo, por lo menos eso creo recordar de "El Castillo del Dr. Malvado" de DIV, qué tiempos jejejejej

Citarsi es un mapa de durezas como dicen es comprobar el color de colision, si se hace mediante bloques, normalmente la coordenada Y del personaje se calcula mediante la X mediante una formula dependiendo del angulo de inclinacion y ademas suelen ser diagonales perfectas, tambien existen los bloques de durezas para ahorrar memoria no es muy usado actualmente pero es lo mas correcto y usado hace muchos muchos años jeje
No me he enterado mucho de cómo hacer el tema de las durezas mediante bloques (nooo)  (nooo)  
here are only 10 types of people: those who understand binary and those who don't

zupervaca

 los bloques de durezas es como tener mapas de durezas de cada bloque individualmente, de esta manera se ahorra memoria

[EX3]

 
Cita de: "Sergio"Pues creo que con lo de las durezas se hace todo, por lo menos eso creo recordar de "El Castillo del Dr. Malvado" de DIV, qué tiempos jejejejej
El Dr. Malvado los escenarios son inmensos graficos que conforman el escenario y perdona que te diga pero eso es una autentica burrada de derroche de memoria y que si usas Direct3D como en mi caso se te limita mucho el tamaño de las texturas en memoria, luego aparte que mover grandes graficos le cuesta mucho mas al programa, y siendo Fenix hay que tener cuidado con estas cosas.

Lo mas idoneo y optimo es usar mapas de tiles, como se ha hecho toda la vida, y renderizar solo lo que se ve en pantalla, y sobre los mapas de durezas ocurre lo mismo, es mas rapido utilizar simple colision de rectangulos, que en la inmensa mayoria de los juegos es mas que suficiente, no suele ser necesaria tanta precision al pixel, que tener mas graficos inmensos de 4096x2048 por ejemplo con las "zonas calientes" ocupando mas memoria.

A no ser que sea necesario como en mi caso,  mi juego es de escenas fijas, estilo al prince of persia, no es scroll, la inmensa mayoria de las escenas las represento por mapas de tiles y las colisiones por rectangulos, pero alguna escena en concreto, como la orilla de una playa, con sus desniveles y demas, suele ser un grafico, del tamaño de la escena, pongamos 768x512 y su mapa de durezas, a mitad de tamaño y a 8 bits de color (un total de 192kb por mapa de dureza) si las plataformas son irregulares (cuestas, pendientes y demas), si no tambien uso cajas de colisiones.

A poder ser mejor tirar en todo lo posible mediante cajas de colision.

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

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

Sergio

 Hombre ya sé que es una burrada, pero depende también de la resolución que utilices. Yo por ejemplo ahora estoy con un beat'em up en Fenix a 320x240 y le coloco los stages enteros en el FPG, y no son mucho más anchas que esta resolución... como mucho tres veces más anchas, 960x240 (y eso si tenemos en cuenta que el scroll no abarca toda la pantalla, sino que seran de unos 180 pixels de alto o cosa así...). Esto también lo ves una burrada?

A mí desde luego no me daba problemas de velocidad ni en DIV :P
here are only 10 types of people: those who understand binary and those who don't






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.