Hola, quizás esta duda sea muy de novato.
Y de hecho, llevo solo dos noches (hasta las 6 AM xD) conociendo BennuGB, pero el saber algo de C me ha ayudado mucho a avanzar bastante rápido.
Bien, he logrado hacer un personaje que se mueva en 4 direcciones en el vacío.
La cosa es que como este juego tendrá una vista desde arriba a lo RPG, obviamente que habrán paredes y objetos con los que mi personaje pueda chocar.
He estado viendo sobre collision pero no sé si me sirva para este caso en particular.
Digo, en realidad lo que quiero es que mi personaje NO pueda colisionar con algunos otros procesos.
Se me han ocurrido varias formas, pero todas requieren una buena porción de código, y me preguntaba si hay una manera "rápida", ahorrativa respecto a recursos, o al menos "conocida" para lograr esto.
He buscado ayuda pero no he encontrado ninguna información que me "ilumine la ampolleta".
Será que en estos días me freí el cerebro? xD
Sea como sea, muchas gracias de antemano. Estaré esperando sus ideas para ver qué puedo hacer, o qué funciones me serían útiles para construir el asuntillo.
Saludos!
Es más sencillo de lo que piensas. imaginate que tienes este código en tu personaje:
if(key(_up))
y--;
end
Pues, para evitar que atraviese al proceso "perro" (por ejemplo). Puedes poner lo siguiente:
if(key(_up))
if(!collision(type perro))
y--;
end
end
Así, sólo harás "y--" si no estás en contacto con un proceso "perro". En este caso, la colisión se realizará en los bordes, asi que el ojo humano no percibe que estén más que rozándose.
si lo q quieres es q no cruce paredes y cosas de esas, lo mas sencillo es usar los mapas de durezas, en el manual de Osk viene bien descrito :)
quizas te convenga usar un mapa de durezas.
+1 durezas, explicado excelentemente en el manual de Osk.
Pero qué respuestas más rápidas, gracias a todos! xD
Yawin, la verdad es que fue muy estúpido no haber pensado en eso ._. estaba complicándome con cosas más enredadas.
Y a los demás, muchas gracias =o justamente en el Manual que dicen, voy en el tema anterior al de Durezas... joder eso me pasa por querer meter las manos en la masa de inmediato xD jeje.
Si vuelvo a tener algun problema, les aviso.
De todas formas, aprovecho para preguntar por un "problema" que he tenido intentando crear juegos en experiencias anteriores.
Imaginemos que tengo una serie de pasillos de una ancho similar al del personaje. He tenido problemas para que el personaje "doble" entre un pasillo y otro, pues a la mínima colisión el movimiento se para de inmediato.
xD si este asunto está cubierto por el tema de Durezas, ignoradme xD ahora mismo voy a comer algo y a seguir con este asuntillo :3 gracias!
si la dureza esta bien hecha no vas a tener ese problema.
Ya estoy probando varias formas de hacer este mapa de durezas. Me estoy calentando la cabeza para ver como hacerlo para "redondear" el movimiento en las puntas. Es decir, que el juego ponga alineado al personaje cuando éste quiere doblar una esquina.
Muchas gracias por la ayuda! :3
los mapas de durezas para caminos no deben seguir el contorno de los graficos, sino que tienen que ser rectos, asi no te quedas pegado a ningun lado.
estaba buscando un ejemplo, pero no lo encuentro.
Quote from: HenBanKeN on June 10, 2011, 06:51:36 AM
Ya estoy probando varias formas de hacer este mapa de durezas. Me estoy calentando la cabeza para ver como hacerlo para "redondear" el movimiento en las puntas. Es decir, que el juego ponga alineado al personaje cuando éste quiere doblar una esquina.
Muchas gracias por la ayuda! :3
Si yo quisiera hacer un comecocos, identificaría las bifurcaciones por ejemplo con otro color en el mapa de durezas, para operar adecuadamente en el momento en el que se esté en ese cuadro. De esa manera simplificas bastante el problema de los giros.
Saludos!
un comecocos es muchisimo mas simple, no se necesita hacer un mapa de durezas de diferentes colores.
Cierto, Splinter. Pero como ejemplo simplificado,creo que se entiende la idea de usar más colores en las durezas...
Muchas gracias por las ideas =O
usando map_get_pixel de forma ingeniosa logré hacer un movimiento redondeado al doblar y quedó de perlas.
Muchas gracias a todos.
Ahora, sobre este mismo tema de bloques con mapas de durezas...
Algunos de los bloques que necesito hacer (solo algunos), son destructibles y aparecen en lugares al azar.
He pensado cómo usar un mapa de dureza para esto, pero no me parece posible. Lo es?
De hecho la alternativa de map_get_pixel creo que no me servirá para esos bloques.
Por lo que he leído sobre collision en estos días desde que llegué al foro, me gustaría mucho evitar esa alternativa... jaja.
Tenéis alguna idea? :3
Saludos!
EDIT: Por cierto, se me olvidaba decir que una de las razones por las que no quería usar collision es porque mi juego está visto desde arriba (como er pokémon), y el personaje es alto entonces su parte superior debería poder "entrar" en los bloques pero la parte de abajo de su cuerpo es la que debe chocar.
Usando mapas de durezas me fue fácil lograr este efecto, bastaba con especificar bien en que coordenadas tomar los pixeles... Pero este caso me parece diferente :/
Quote from: HenBanKeN on June 11, 2011, 05:19:20 AM
Ahora, sobre este mismo tema de bloques con mapas de durezas...
Algunos de los bloques que necesito hacer (solo algunos), son destructibles y aparecen en lugares al azar.
He pensado cómo usar un mapa de dureza para esto, pero no me parece posible. Lo es?
Yo para esos casos usaria "durezas dinamicas" xDD es decir .. cuando el bloke se ponga sobre el terreno, que se pinte sobre el mapa de durezas una sección de forma dinámica. Y cuando ese bloque se destruya pues se pinte en el mapa de durezas el color q no impide el paso. Vamos q sería modificar en tiempo de juego el mapa de durezas, esto no afectaría a la imagen q tienes en el disco duro, solo al mapa q tienes cargado en memoria, q es el q modificas.
Quote from: HenBanKeN on June 11, 2011, 05:19:20 AM
Muchas gracias por las ideas =O
usando map_get_pixel de forma ingeniosa logré hacer un movimiento redondeado al doblar y quedó de perlas.
Muchas gracias a todos.
Ahora, sobre este mismo tema de bloques con mapas de durezas...
Algunos de los bloques que necesito hacer (solo algunos), son destructibles y aparecen en lugares al azar.
He pensado cómo usar un mapa de dureza para esto, pero no me parece posible. Lo es?
De hecho la alternativa de map_get_pixel creo que no me servirá para esos bloques.
Por lo que he leído sobre collision en estos días desde que llegué al foro, me gustaría mucho evitar esa alternativa... jaja.
Tenéis alguna idea? :3
Saludos!
EDIT: Por cierto, se me olvidaba decir que una de las razones por las que no quería usar collision es porque mi juego está visto desde arriba (como er pokémon), y el personaje es alto entonces su parte superior debería poder "entrar" en los bloques pero la parte de abajo de su cuerpo es la que debe chocar.
Usando mapas de durezas me fue fácil lograr este efecto, bastaba con especificar bien en que coordenadas tomar los pixeles... Pero este caso me parece diferente :/
mas alla de si usas durezas para las collisiones de terreno, lo cual tambien puedes usar collision contra el mapa de durezas, cada personaje tiene que tener 2 procesos que se mueven como 1 solo, 1 de para la colision, y otro para el personaje visible.
gracias, KeoH, Splinter =)
Se me había ocurrido ambas cosas, es bueno saber que son caminos viables.
Esta mañana he resuelto el asunto, usando un método parecido al que menciona Splinter (con algunos ajustes para mi juego en particular).
Muchas gracias nuevamente, por ayudarme a iniciar en BennuGD! :D karma!