Buenas,
Me presento como chicagoserie, estoy iniciándome en Gamemaker y de hecho estoy siguiendo un tutorial para reproducir un juego tipo Flappy Plane.
Mi duda me asalta, que al parecer en versiones anteriores de Gamemaker, el código que os pongo era funcional. Este código generaba rocas, manteniendo entres sus bases 672 pixels, y eligiendo las posiciones aleatorias PY.
Parece ser que la función instance_create fue sustituida por instance_create_layer o instance_create_depth, auqnue con estas no soy capaz de hacerlo.
/// @description Generar rocas
dy = 672; // distancia entre las dos rocas
py = choose(-164,-128,-96,-64,-32,0);
instance_create(x+50,y+0,obj_Roca_Superior);
instance_create(room_width+50,py+dy,obj_Roca_Inferior);
alarm[0] = room_speed; // Generador ON
Si alguien me lo puede aclarar agradecido.
Hola chicagoserie
Efectivamente, GMS2 cambió la forma en la que se crean los objetos para adaptarlos a su nuevo layer system.
Puedes cambiar el instance_create por instance_create_depth.
Mantienes los mismos argumentos de la función, pero añades la depth (puede ser cualquier valor entre -16000 y 16000. Te recomiendo usar 0)
Por ejemplo:
/// @description Generar rocas
dy = 672; // distancia entre las dos rocas
py = choose(-164,-128,-96,-64,-32,0);
instance_create_depth(x+50,y+0,0,obj_Roca_Superior);
instance_create_depth(room_width+50,py+dy,0,obj_Roca_Inferior);
alarm[0] = room_speed; // Generador ON
Saludos
Hola BSS String,
Gracias por tu ayuda.
He probado el codigo y parece que hay que afinar algo, porque no me sale ninguna roca generada.....pero cuando empieza el juego de repente aparece una que colisiona con el objeto jugador.
Adjunto imagen.
https://drive.google.com/file/d/1kRixcsrHdM8dv8hPDHtxNIFRYlVMbqtj/view?usp=sharing
Saludos.
Hola chicagoserie
El error aquí puede ser cualquier cosa.
Empezando por el evento de creación de objetos, que creas las dos rocas en distinta posición horizontal...
instance_create_depth(x+50,y+0,0,obj_Roca_Superior);
instance_create_depth(room_width+50,py+dy,0,obj_Roca_Inferior);
Tienes que usar o una o la otra, pero debe ser la misma en ambas para que se vean al mismo tiempo.
Lo otro que puede ser el problema, es que la roca inferior se esté dibujando por debajo de la pantalla, puedes corregirlo cambiando el "origen en y" de las propiedades del sprite o ajustando su coordenada y cuando la generas.
Saludos