Tengo un peque?o problema con colisiones, el juego que ando desarollando trata sobre un personaje que va pintando casillas neutras de el color de su equipo.
(http://img521.imageshack.us/img521/1888/ejemploxd.png)
cuando el personaje colisiona con la casilla, automaticamente la pinta de su color, pero lo que quiero hacer es que cuando se salga y vuelva a colisionar la casilla roja pintada cambie a otra casilla de un color rojo pero mas fuerte
por ejemplo:
Casilla neutra
(http://img716.imageshack.us/img716/6016/baldosa1.png)
el personaje al colisionar con ella la pinta de rojo(baldosa roja 1)
(http://img832.imageshack.us/img832/1359/baldosared1.png)
luego de irse y volver a pasar por la casilla previamente pintada, cambia a otra de un rojo mas claro (casilla roja 2)
(http://img826.imageshack.us/img826/1374/baldosared2.png)
y al volver a irse y pasar de nuevo otra vez, cambiarla a otra aun mas clara(casilla roja 3)
(http://img806.imageshack.us/img806/4899/baldosared3.png)
Trate de configurar esto en D&D, y ingeniarmelas con sprite index o usando variables, pero me ocurre el mismo problema, el problema es que el personaje al colisionar con la baldosa neutra, la pinta de una vez a casilla roja 3, y supongo que el error ocurre por que al colisionar cambian todas de una vez, pero ?que podria hacer para que se pinte a baldosa roja 1 y espere hasta que vuelva a colisionar para pintarla a baldosa roja 2, y de baldosa roja 2 a baldosa roja 3?
Buenas, te lo he hecho, pero no est? en isom?trico. Tampoco en D&D, lo he hecho en GML pero he intentado explicarlo lo mejor que he podido. Cualquier duda pregunta :)
Espero que te sea de ayuda.
Un saludo.
Se me ocurre colocar un trozo de c?digo como este en todos los objetos casilla1, casilla2, casilla3, etc.)
Por ejemplo en el evento step del objeto casilla1:
si ((colision1_con_personaje == false) y (permiso_para_pintar1 == ture))
{
pintar casilla con color baldosa roja 1;
clision1_con_peronaje := true;
colision2_con_personaje := false;
colision3_con_personaje := false;
permiso_para_pintar1 := false;
}
si ((colision2_con_personaje == false) y (permiso_para_pintar1 == ture))
{
pintar casilla con color baldosa roja 2;
clision1_con_peronaje := true;
colision2_con_personaje := true;
colision3_con_personaje := false;
permiso_para_pintar1 := false;
}
si ((colision3_con_personaje == false) y (permiso_para_pintar1 == ture))
{
pintar casilla con color baldosa roja 2;
clision1_con_peronaje := true;
colision2_con_personaje := true;
colision3_con_personaje := true;
permiso_para_pintar1 := false;
}
Una vez que entres en colision y permanezcas ah?, se pintar? la casilla solo una vez y la variable permiso_para_pintar1 no permitir? que suceda nada m?s. Obviamente cuando la colisi?n sea con otra casilla deberas cambiar la variable permiso_para_pintar1 a "true" para que la pr?xima vez que colisones con casilla1 puedas pintar con el siguiente color.
Bueno este es un ejemplo burdo. Espero que funcione y no haberme equivocado. De todas formas tal vez esto te de una nueva idea.
Sigue adelante!
Tratare de ver si me funciona, puse un ejemplo adjunto de lo que trate de hacer antes, solo que en mi caso cambiare sprites o instancias.
Intente hacerlo con tu codigo, pero cambiando instancias y usando variables, pero no se por que pero no me funciona bien, algunas baldosas neutras cambian a baldosa roja 1, mientras que otras a baldosa roja 2, no se a que se debe el problema, dejo el archivo adjunto.
Mi problema es que yo no puedo abrir archivos gmk, yo uso :GM5: Solo puedo abrir archivos gmd. Sorry, creo que voy a tener que instalar :GM8: solo para ver sus c?digos amigos.
Cita de: Gutic en Marzo 06, 2011, 08:20:23 PM
Buenas, te lo he hecho, pero no est? en isom?trico. Tampoco en D&D, lo he hecho en GML pero he intentado explicarlo lo mejor que he podido. Cualquier duda pregunta :)
Espero que te sea de ayuda.
Un saludo.
adapt? tu codigo y lo cambie para instancias, ya que cada baldosa tiene unas caracteristicas especificas, por eso no usaba imagenes dentro de otra, me fue util tu ejemplo, gracias, mi problema fue resuelto.