Febrero 11, 2016, 02:20:52 AM Ultima modificación: Febrero 11, 2016, 07:54:43 PM por ardilla321
Estimados,

tengo una nueva consulta, esta vez respecto a un codigo de transicion de habitacion, el cual es el siguiente:

obj_transicion

Evento create
[spoiler]fade = false;
actual_room = room;
nx = 0;
ny = 0;
nroom = room0;
dir = 0;
image_alpha = 0;

for (i = 0; i < 3; i += 1)
{
    instance_create(x - 16 + 16 * i, y + 48, obj_wall);
}
[/spoiler]

Evento Step
[spoiler]if (fade)
{
    if (actual_room == room && image_alpha < 1) image_alpha += .05;
    else if (actual_room != room && image_alpha > 0) image_alpha -= .05;
   
    if (x == 632 && y == 128 && room == room0) {nx = 0; ny = 128; nroom = room1; dir = 1;}
    else if (x == 0 && y == 128 && room == room1) {nx = 632; ny = 128; nroom = room0; dir = -1;}
    obj_player.x_speed = obj_player.x_max * dir;
    obj_player.land = false;
    obj_player.crouch = false;
    obj_player.facing = dir;
}

if (actual_room != room && image_alpha == 0)
{
    instance_destroy();
    global.transition = false;
}
else if (actual_room == room && image_alpha == 1)
{
    scr_room_transicion(nx, ny, nroom, dir);
}
[/spoiler]

Scrip scr_room_transicion
[spoiler]dir = argument3;
obj_player.x = argument0 + 4 - (7) * dir;
obj_player.y = argument1 + 48;
room = argument2;
[/spoiler]

El codigo como esta, funciona correctamente. La transicion de una room a otra (de room0 a room1) se hace sin problemas. Sin embargo, a la hora de crear una nueva room (por ejemplo: room02) y poner que pase de la room01 a la room02 la transicion funciona bien, pero cuando pasa de la room02 a la room01 el personaje pasa a la room01 y se devuelve enseguida a la room02 y asi sucesivamente sin parar, es decir, la transicion nunca se detiene.

No entiendo por que el simple cambio de la room01 a room02 el codigo enseguida deja de funcionar. ¿Reconocen alguna parte que pueda estar afectando el codigo?

¡Muchas gracias! :)

Creo que es porque el jugador aparece justo en la zona donde va hacia el room2 :)
Ya sabes, haciendo un bucle infinito.
Para poner un ejemplo: Chocas o estas sobre el obj-cubito y el jugador se te guarda encima del obj-cubito. El obj-cubito te dirige a la siguiente room. En el room2, hay otro obj-cubito que te dirige hacia el room1. Te pones en ese obj-cubito y tu jugador se guarda encima del obj-cubito. Y se empieza a formar un bucle :v

Entonces lo que tu tendrias que hacer, es el que el jugador al entrar a la room, el jugador tiene que crearse algunos pixeles mas al lado del obj-cubito para que no se forme un mega bucle infinito :)

Con los scripts que mostrados, es un poco difícil saber.
¿En qué momento se utiliza la función room_goto?

Cita de: AppCore1 en Febrero 11, 2016, 07:13:30 AM
Creo que es porque el jugador aparece justo en la zona donde va hacia el room2 :)
Ya sabes, haciendo un bucle infinito.
Para poner un ejemplo: Chocas o estas sobre el obj-cubito y el jugador se te guarda encima del obj-cubito. El obj-cubito te dirige a la siguiente room. En el room2, hay otro obj-cubito que te dirige hacia el room1. Te pones en ese obj-cubito y tu jugador se guarda encima del obj-cubito. Y se empieza a formar un bucle :v

Entonces lo que tu tendrias que hacer, es el que el jugador al entrar a la room, el jugador tiene que crearse algunos pixeles mas al lado del obj-cubito para que no se forme un mega bucle infinito :)

Justamente era ese el problema, se generaba un bucle infinito porque al momento de aparece colisionaba nuevamente con el objeto que cambia de room. ¡Muchas gracias!

Cita de: Clamud en Febrero 11, 2016, 04:19:46 PM
Con los scripts que mostrados, es un poco difícil saber.
¿En qué momento se utiliza la función room_goto?

Room_goto no se utiliza en este codigo. Aqui se usa la variable nroom para cambiar la habitacion cuando ocurre un efecto de transicion (declarado fade) que hace que la room cambie. De todas formas trate de utilizar room_goto, pero el efecto no era el mismo :(

¡Muchas gracias ha ambos!


ardi, ya he visto en varios posts que pones el código en spoilers, supongo que pk no sabes de otra manera, te recomiendo que uses las etiquetas
[gml]tu codigo[/gml]
o preferiblemente por los colorines del gml xD
[gml]tu codigo[/gml]

ya que en spoilers se hace épicamente molesto e ilegible a no ser que lo copies todo y lo peques en otra parte :S
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]