Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: anonimo16 en Septiembre 03, 2017, 04:51:42 AM

Título: Duda con respecto al cambiar de room y la posicion inicial(Solucionado)
Publicado por: anonimo16 en Septiembre 03, 2017, 04:51:42 AM
Se me hace dificil explicar lo que quiero hacer :-[ pero tratare de hacerlo lo mejor posible.

En resumen lo que quiero es que al volver a una room anterior el "Player" no inicie en el otro extremo de la room que es donde donde este empieza inicialmente, si no que aparezca al lado de la puerta para que de el efecto de que entre y sale.

tengo un objeto "Game" que se encarga de las variables mas importantes del juego y ahi tengo
Create Event:
global.level = 0; //esto seria el nivel donde inicia
global.back = 0; //si la opcion de retroceso esta o no activada

Room Start:
if global.level = 0 { instance_create( 112, 176, player) }
if global.level = 1 { instance_create( 112, 176, player) }
if global.level = 0 && global.back = 1 { instance_create(112,32,player) } // aqui cambia la posicion donde se crea el jugador
if global.level = 1 && global.back = 1 { instance_create ( 112,32,player)}


luego tengo un objeto "obj_next" que tiene
CitarEvent collision con "Player":

global.level += 1;
global.back += 1;
room_goto_next()

luego en la otra room creo donde este la salida un objeto "obj_back" que tiene lo siguiente:
Citarglobal.level -= 1;
room_goto_previous();

PERO ESTO NO FUNCIONA COMO YO QUIERO :( mientras mas rooms hayan no me sirve con el 0 y 1 del obj_back. Si me echan un cable se les agradeceria:( supongo no debe ser un codigo tan dificil lo que pasa es que no soy tan bueno programando jaja
Título: Re:Duda con respecto al cambiar de room y la posicion inicial
Publicado por: Ashe de Freljord en Septiembre 03, 2017, 09:13:38 AM
Deberias definir 2 variables globales para establecer el lugar donde se colocará el jugador cuando pase una puerta.

Entonces suponte que estas en el room2, y en ese room hay incluso 4 puertas diferentes. Cada puerta deberia setear las coordenadas en donde quedará el jugador al pasar por dicha puerta.

global.pos_x = 300
global.pos_y = 100

entonces solo bastaría con cambiar de room y asignarle al player las coordenadas.

player.x = global.pos_x
player.y = global.pos_y
Título: Re:Duda con respecto al cambiar de room y la posicion inicial
Publicado por: anonimo16 en Septiembre 03, 2017, 04:05:36 PM
Cita de: Ashe de Freljord en Septiembre 03, 2017, 09:13:38 AM
Deberias definir 2 variables globales para establecer el lugar donde se colocará el jugador cuando pase una puerta.

Entonces suponte que estas en el room2, y en ese room hay incluso 4 puertas diferentes. Cada puerta deberia setear las coordenadas en donde quedará el jugador al pasar por dicha puerta.

global.pos_x = 300
global.pos_y = 100

entonces solo bastaría con cambiar de room y asignarle al player las coordenadas.

player.x = global.pos_x
player.y = global.pos_y

Es decir, que tengo que crear varios objetos "puertas" para cada room?
Título: Re:Duda con respecto al cambiar de room y la posicion inicial
Publicado por: Ashe de Freljord en Septiembre 03, 2017, 04:50:19 PM
Según mi planteamiento si. O hacer un objeto solamemte y modificar su evento create mediante el editor de room.

O si las entradas y salidas en los rooms estan exactamente en el mismo lugar en todos los cuartos sólo sigue usando los objetos que ya tenías pero aplicando lo que puse inicialmente.
Título: Re:Duda con respecto al cambiar de room y la posicion inicial
Publicado por: anonimo16 en Septiembre 03, 2017, 05:05:33 PM
Ya lo he solucionado me ha quedado asi:

En el objeto Game:
//Create Event
global.playerx = 120;
global.playery = 178;
//Aqui definimos las variables para la primera vez que se inicie el juego

Luego cree dos objetos que serian "Next" y "Back"

obj_Next:
Collision with Player
if room == level1 {  global.playerx = 120 global.playery = 178 room_goto_next() }
if room == level2{  global.playerx = 120 global.playery = 178 room_goto_next() }

obj_Back
Collision with player
if room == level2 {  global.playerx = 120; global.playery = 32; room_goto_previous() }
if room == level3 {  room_goto_previous() global.playerx = 120; global.playery = 42;}


Y por ultimo en el obj del Player(o objeto que queramos que cambie de posicion con este code)

Room Start:
x = global.playerx;
y = global.playery;