Ver la versión completa : Durezas o colision en terreno de plataformas?
Neodreamer
26/11/2007, 11:18
Hola, en SDL he leido q para el tema de deteccino de colisiones se suele usar cubos. Yo vengo de fenix y sus durezas asiq no se como he de hacer para detectar en un plataformas el suelo o las plataformas.
Q metodo recomendais? Algun ejemplo sencillo para entender y luego ampliar?
Gracias
Puedes usar un algoritmo similar al del castle of DR malvado o al firewhiph (que creo que usan el mismo, o casi el mismo). y aplicarlo a SDL; la cosa está en analizar de 1 en los píxels que vas avanzando mediante un bucle for.
Bueno, ya te harás una idea cuando mires el código.
dr_bacterio
26/11/2007, 13:34
Buenas, puedes utilizar cuadrados , un cuadrado q envuelve a tu personaje y otro q envuelve al objeto con el que quieres detectar si colisionas, si los cuadrados se solapan hay colision, o mediante una mascara. Lo de la mascara es almacenar en un framebuffer identico al q mostraras por pantalla con la SDL_surface , pero esta solo tiene una profundidad de 1 bit, es decir para saber si ese trozo de la superficie esta ocupado por algo o no.Por tanto a la hora de dibujar el suelo, pintas el grafico del suelo en la SDL_surface con todos los colores, y luego pintas en el "buffer de colisiones" el modelo de un solo bit del trozo del suelo, cuando tu personaje salte y luego caiga seguira cayendo hasta q su posicion X,Y (del los pies) corresponda con la entrada X,Y del buffer de colisiones q contenga un 1 (quiere decir q hay algo) en vez de un 0 ( que quiere decir q ahi no hay nada).
Esta explicado muy a groso modo para darte una pista , si necesitas mas aclaraciones intentaré ampliartelo.
Enga saludos :brindis:
Neodreamer
26/11/2007, 22:13
Hombre la idea es bastante buena...ya q si tileo toda la fase, podria hacerme un array de 0,1,2 y 3 en los q 0 sea el aire, 1 el suelo, 2 las paredes verticales y 3 el jugador... esta bien lo q digo o es una burrada?
O se podria incluso de alguna forma ahorrar lineas y tiempo y potencia de proceso si los propios tiles tuviesen esos valores?
Es decir, si los bloques, nubes y plataformas llevan un numero de tile, q al contactar con el jugador reaccione de ciertas maneras....
Gracias
En el caso de un sistema de tiles, creo que la idea óptima es la de neodreamer.
Ya que tienes un mapa de tiles, puedes añadir a dicho mapa información concreta de si el tile en cuestión ejerce colisión o no, y te ahorras tener que comparar framebuffers.
Incluso si usas enumeraciones, podrías tener diferentes tipos de colisión, para representar, por ejemplo, la típica zona de arena del mario en la que te hundes poco a poco.
En el caso de un sistema de tiles, creo que la idea óptima es la de neodreamer.
Ya que tienes un mapa de tiles, puedes añadir a dicho mapa información concreta de si el tile en cuestión ejerce colisión o no, y te ahorras tener que comparar framebuffers.
Incluso si usas enumeraciones, podrías tener diferentes tipos de colisión, para representar, por ejemplo, la típica zona de arena del mario en la que te hundes poco a poco.
Pero si utilizas tiles como colision o incluso cuadrados el nivel de detalle de la colisión será pésimo vamos como un mario bros, si quieres algo mas profesional ( rollo sonic ) tendrías que recurrir a mascaras de colisión o mapa de durezas, las primeras consumen bastante al tener que comprobar pixel por pixel, así que yo te recomiendo que uses un mapa de durezas que es muy rápido y puedes definir durezas complejas como cuestas y cosas así, lo malo es que usaras mas memoria pero dudo que tengas problema de memoria en la gp2x...
Neodreamer
27/11/2007, 01:19
Y como seria una funcion de mapa de durezas en sdl? xq en feniz es muy sencillo precisamente eso, pero en sdl...ni papa.
Seria similar a la comprobacion del color transparente de los sprites?
Gracias x responder.
Y como seria una funcion de mapa de durezas en sdl? xq en feniz es muy sencillo precisamente eso, pero en sdl...ni papa.
Seria similar a la comprobacion del color transparente de los sprites?
Gracias x responder.
Pues te haces otra imagen como la del mapa igual que en fenizx, o de la mitad de tamaño o como lo hagas normalmente... y compruebas el color del pixel que quieras ver si hay dureza o no... los colores pues los pones como tu quieras... rojo dureza y tonos de gris para las referencias o como tu veas eso ya es a gustos :D
Estopero
27/11/2007, 02:04
Yo en el bugafactor estoy usando durezas, que pienso que es muy preciso y no muy dificil de implementar, sencillamente cargas el mapa de durezas en una superficie y vas haciendo getpixel de la posicion, no tiene mas =)
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.