Febrero 16, 2014, 12:13:57 PM Ultima modificación: Febrero 16, 2014, 12:17:28 PM por Jangse
Normalmente en la room principal del juego, se pone el jugador arrastrándolo en la ventana de objetos a la room. Y cuando comienza el juego, desde esa posición comienza. Yo aún sigo con el tema de cambios de room y tal. Y claro, quiero que cuando pase a la siguiente room, aparezca en las coordenadas que yo le dé por código.

Había pensado poner este código (en evento STEP). Pero no funciona:

if (y == 896) and (room =(PLAYA))
{
    room_goto(Nivel_4)
    obj_heroe.x = 1024; obj_heroe.y = 32;
}


Y este tampoco:

if (y == 896) and (room =(PLAYA))
{
    room_goto(Nivel_4)
    instance_create(1024,32,obj_heroe);
}


En la segunda room, el personaje (obj_heroe) me sale donde yo lo he pegado. No en las coordenadas que yo le indico.

Lo que no sé, si en la segunda room (la nueva donde vamos a parar), también debo arrastrar al objeto personaje en la ventana de objetos y pegarlo en esta segunda room. O bien, se debe hacer por código.


Buenas, he modificado tu código para que funcione:


if (y == 896) and (room =(PLAYA))
{
    global.nuevaX=1024; global.nuevaY=32;
    room_goto(Nivel_4)
}


Nota que pongo las variables antes del room_goto, ya que si no cambia de room y no se ejecuta el código que va después.

Entonces en el evento <Room start> del jugador tendrás que ponerle:

x=global.nuevaX; y=global.nuevaY;


Además tendrás que declarar las variables de nuevaX y nuevaY en algún sitio antes de empezar el juego porque sino al empezar un nivel el personaje no va a saber dónde ponerse, buscará el valor de global.nuevaX y no lo encontrará porque aún no lo habrás declarado.



Un saludo!

Gracias. Pero lo que no entiendo es por que no funciona el primer código que puse. Ya que, claramente, le estoy diciendo que pase a la room(playa) que ya lo hace. Pero que luego situé el personaje en esas coordenadas.

Al final (y no me convence mucho), he creado en Creation Code de la nueva room, las coordenadas del personaje cuando entra a ella.

Pero me gustaría que esto se pudiera hacer desde nuestro evento Step del personaje. No entiendo muy bien, por que hemos de definir nuevas variables sobre estas coordenadas. Ya que tanto la X como la Y son globales. Bastaría con modificar sus valores atendiendo a las condiciones que nosotros le indicáramos.


El código que pusiste no funciona porque:

1-Las variables las declaras después del room_goto, por lo tanto no se ejecutan.
2-Estás cambiando las cordenadas X e Y del personaje en la room actual, pero no en la nueva room

El personaje en la primera room es diferente del personaje en la segunda room (playa).
Las instancias de cada room son independientes.

En mi ejemplo he definido unas variables globales porque puedes acceder a ellas desde cualquier room, cosa que no pasa con las instancias, el player de la room1 se queda en la room1 y no puedes tocarlo desde otra.

Cita de: Mega G en Febrero 16, 2014, 02:16:47 PM
El código que pusiste no funciona porque:

1-Las variables las declaras después del room_goto, por lo tanto no se ejecutan.
2-Estás cambiando las cordenadas X e Y del personaje en la room actual, pero no en la nueva room

El personaje en la primera room es diferente del personaje en la segunda room (playa).
Las instancias de cada room son independientes.

En mi ejemplo he definido unas variables globales porque puedes acceder a ellas desde cualquier room, cosa que no pasa con las instancias, el player de la room1 se queda en la room1 y no puedes tocarlo desde otra.

Gracias Mega. Al final lo he solucionado. Aunque de otra manera.

Antes colocaba el objeto jugador en todas las rooms. Y claro, cuando entraba a ellas, aparecía donde lo había situado yo en el editor de objetos. Es ese caso no marcaba persistente en el objeto jugador. Ya que si no, aparecíamos con dos jugadores.

Pero después de algunos consejos, he marcado la casilla de persistente en el jugador. Y solo lo situó yo manualmente en el room de inicio. En las siguientes rooms lo hago por código. De esa forma, el código del primer post si me funciona.

También marco persistente en algunas rooms. Por que no tiene lógica, que eliminemos enemigos de una room y que si volvemos a ellas, estos resuciten...jejeje.

Saludos...!!!