Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - Zapdos43

16
en el objeto revivir:
evento left pressed:
[gml]
global.juego = true;
with(objeto control)
{
alarm[0] = x;
alarm[1] = x;
}
[/gml]
17
¿a quién quieres revivir? ¿al objeto control?
18
Preguntas y respuestas / Re:ERROR EN EL SCRIPT
Agosto 22, 2017, 01:17:22 PM
Prueba a poner en el objeto control un depth de -100. Abre las propiedades del objeto Control para cambiar el Depth.
¿ te ha funcionado ?
19
Puedes dibujar el recuadro desde el evento draw:
Por ejemplo:

create:
[gml]
depth = -1000; // o tambien puedes cambiar esta propiedad desde las propidesdes del objeto (Depth)
alpha = 1;
color = make_color_rgb(0,0,0); // color negro en modo RGB (r = 0, g = 0, b = 0)
sumar = false;
[/gml]

step:
[gml]
if alpha <= 0
{
sumar = true;
} else if alpha >= 1
{
sumar = false;
}

if (sumar)
{
alpha += 0.001;
}
else
{
alpha -= 0.001;
}
[/gml]

draw:
[gml]
draw_set_color(color);
draw_set_alpha(alpha);
draw_rectangle(view_xview[0],view_yview[0],view_xview[0]+view_wview[0],view_yview[0]+view_hview[0],false);
[/gml]

20
Me gustaría llegar a jugarlo.  ;)
21
Sigue probando a cambiar cuánto se suma o resta la opacidad. Por ejemplo, prueba:

[gml] alpha += 5/room_speed;[/gml]
Si tienes una room con 60 FPS entonces 5 / 60 = 0.0833

[gml] alpha += 0.5/room_speed;[/gml]
Si son 60 FPS entonces 0.5 / 60 = 0.0083
22
La idea es correcta. Usas un evento create y un evento step.
evento create:
[gml]
alpha = 1;
sumar = false;
image_alpha = alpha;
[/gml]

evento Step:
[gml]
if alpha <= 0
{
sumar = true;
} else if alpha >= 1
{
sumar = false;
}

if (sumar)
{
alpha += 0.01;
}
else
{
alpha -= 0.01;
}
image_alpha = alpha;
[/gml]
23
[gml]
// valores entre 0 y 1
image_alpha = 0; // transparente
image_alpha = 1; // opaco
image_alpha = 0.5; // semitransparente
[/gml]
24
en el objeto que dibuja la salud de los enemigos:

[gml]with(objeto_enemigo)
{
draw_health_bar();
}[/gml]
25
Se trata del típico juego de pulsar la tecla correcta cuando aparece en pantalla. Si eso es lo que buscas puedes probar lo siguiente:

objeto Controlador:
evento create:
[gml]
vidas = 3; // empezamos con 3 vidas
tecla = choose("a","b","c");
alarm[0] = room_speed * 2; // 2 segundos para reaccionar
[/gml]

evento alarm[0]:
[gml]
if (vidas != 0) // si no tenemos 0 vidas
{
vidas -= 1; // restar una 1 vida
}
[/gml]

evento step:
[gml]
if vidas == 0
{
alarm[0] = -1; // detener alarma
room_restart(); // reiniciar nivel
}
// pulsar tecla A
if keyboard_check_pressed(ord('A'))
{
if tecla == "a"
{
alarm[0] = -1; // detener la cuenta atrás
tecla = choose("a","b","c");
alarm[0] = room_speed * 2; // reiniciar cuenta atrás
}
}

// pulsar tecla B
if keyboard_check_pressed(ord('B'))
{
if tecla == "b"
{
alarm[0] = -1; // detener la cuenta atrás
tecla = choose("a","b","c");
alarm[0] = room_speed * 2; // reiniciar cuenta atrás
}
}
// pulsar tecla C
if keyboard_check_pressed(ord('C'))
{
if tecla == "c"
{
alarm[0] = -1; // detener la cuenta atrás
tecla = choose("a","b","c");
alarm[0] = room_speed * 2; // reiniciar cuenta atrás
}
}
[/gml]

evento Draw:
[gml]
draw_text(32,32,"La tecla a pulsar es: "+string(tecla)); // escribir en pantalla la tecla a pulsar
[/gml]
26
Lo más probable es que la máscara de colisión (mask) es diferente en cada sprite.

Entra en las propiedades de cada sprite y modifica el mask.

Te paso un video en español que explica esto:
https://www.youtube.com/watch?v=y6Fg46uvzQ8
Aunque el autor del video usa GM 8, sigue siendo aplicable para GM Studio.
27
Escudo_rayo:
create event:
[gml]
alarm[0] = room_speed * 10; // 10 segundos para autodestruirse
[/gml]

alarm[0]:
[gml]
instance_destroy();
[/gml]

step event:
[gml]
// colocar el escudo rayo en el centro del personaje
x = personaje.x + 8;
y = personaje.y -12;
// detectar colisiones con enemigos
// radio = 48 px (mitad de 96)
cc = collision_circle(x, y, 48, objeto_padre, false, false);
if (cc)
{
     with(cc)
     {
       instance_destroy();
     }
}
[/gml]
28
Creo recordar que tu escudo era circular, te servirá la función collision_circle:

evento Step:
[gml]if instance_exists(objeto_escudo) // nos aseguramos de que existe el escudo
{
cc = collision_circle(x, y, radio, objeto_padre, false, false); // copiamos el ID del objeto que colisiona
if (cc) // si existe ID
{
with(cc) instance_destroy();
}
}[/gml]

Dentro de la función de collision_circle debes indicar las coordenadas x,y que serán el centro del círculo. Si tu sprite está centrado, puedes poner "personaje.x" y "personaje.y". En radio debes poner el radio del círculo medido en pixeles. Por ejemplo, si el escudo tiene un diámetro de 20 px, el radio es (diámetro/2) = 10 px.
29
En evento Step del Jugador, en el primer Execute code coloca arriba del código:

[gml]
// hacer invisible al jugador cuando entre a la room final
if (room == room_final)
{
visible = false;
}[/gml]

Luego en el evento Draw GUI del jugador, en el primer Execute code coloca arriba del código:
[gml]// no seguir leyendo el código cuando visible es false
if (!visible)
{
exit;
}[/gml]

Repite este último paso para el evento Draw GUI del objeto controlador.
30
Solo actívala una vez. Puedes poner esa función en el Creation Code de la primera room. O también en un solo objeto en el evento Game start, Room start o Create.