Hola Gamemakerinos!
estoy empezando con el Game Maker y me surgió una dificultad que no pude resolver: Al organizar los elementos de una room, tengo un objeto posicionado en la capa superior (o sea, su profundidad está sobre encima de todos los demás), que funciona como velo (en realidad es solo una imagen negra con una opacidad baja (alpha=200) para que al encender o apagar la luz la habitación se ilumine o se oscurezca. Funciona perfectamente, pero:
1. Es esta una buena forma de lograr ese efecto, o existe otra mejor?
2. una vez posicionado la capa, ya no puedo manipular ninguno de los objetos de la room (están todos "debajo" de ella y al cliquear en cualquier parte, marco la capa y no el objeto deseado, ver imagen adjunta)
Existe alguna forma de solucionar esto, o debo quitar la capa cada vez que quiera mover otro objeto de la room?
Saludos y gracias!
Juan Pablo
Hola jpsaenz! Supongo que ese objeto tiene puesto un sprite, y que al cliquearlo en la room lo seleccionas. Te doy 2 soluciones:
1) Mantener la forma en la que estás haciendo ese efecto
En el objeto de tu jugador (digo el del jugador porque lo más probable es que en los niveles que necesites ese efecto va a estar presente el jugador, quizás en el menú principal no lo necesites), en el evento create, podés poner:
instance_create(0,0,[objeto]);
y eliminar el objeto de la room donde editás el nivel.
2) Hacer el efecto por código
En el evento draw de tu objeto para el efecto podés poner:
///DRAW
//Características del efecto
draw_set_color(c_black); //El color del efecto. Si querés hacer el efecto de oscuridad, supongo que vas a usar el color negro :v
draw_set_alpha([alpha]); //La opacidad del efecto. 1 máximo, 0 mínimo
//Dibujar el rectángulo
//Lo de view es por si usas views, si no probá estos valores: 0,0,room_width,room_height
draw_rectangle(view_xview[0],view_yview[0],view_wview[0],view_hview[0],false);
No probé el código, pero debería funcionar.
Espero que te sirva
Cita de: Hezz en Agosto 03, 2018, 12:48:23 AM
En el objeto de tu jugador (digo el del jugador porque lo más probable es que en los niveles que necesites ese efecto va a estar presente el jugador, quizás en el menú principal no lo necesites), en el evento create, podés poner:
instance_create(0,0,[objeto]);
y eliminar el objeto de la room donde editás el nivel.
Suena bien. "0,0," es x,y? Con respecto al punto 0,0 de la room (presumo que arriba a la izquierda), o son las coordenadas del jugador? (en cuyo caso no serviría puesto no quiero que este efecto se mueva con el jugador si no que permanezca fijo sobre toda la escena)
De todas formas probaré a ver qué pasa ;-)
Gracias!
0,0 es la coordenada en la room, si no se debería usar las variables "x" e "y".