Febrero 01, 2018, 11:39:37 AM Ultima modificación: Febrero 01, 2018, 05:39:58 PM por Yuzo
Se me da horrible poner titulos a los posts.

Buenos Dias amigos;

Queria ver si podemos resolver un tema con el PASUE.

Tengo un objeto que se cae en cuanto se crea, tiene lo siguiente:

EVENTO CREATE:

[gml]
///PROPIEDADES

// SUENA LA VOZ
sound_play(snd_enemy_1_dead)

// DIRECCION
direction = 0

// VELOCIDAD
speed = 4
[/gml]

EVENTO STEP:

[gml]
/// GRAVEDAD
gravity += 0.08
[/gml]

Quisiera que al activarse la variable global.pause se detuviera, pero no se como hacerlo, ademas, deberá guardar la gravedad que tenia al ponerse el pause, no se si me explico.

he probado con esto, pero no funciona:

EVENTO CREATE

[gml]
///PROPIEDADES

// SUENA LA VOZ
sound_play(snd_enemy_1_dead)

// DIRECCION
direction = 0

// VELOCIDAD
speed = 4

// VARIABLES DE CONTROL DE CAIDA
vel = speed
grav = gravity
[/gml]

EVENTO STEP

[gml]
if global.pause == true{
gravity = grav*0
speed = vel*0
}else{
gravity = grav
speed = vel
gravity +=0.08
}
[/gml]

Pensé que guardando los valores de gravedad y velocidad en variables lo solucionaria si lo multiplico por 0, y al quitar el pause lo dejo en la variable normal sin multiplicar, pero no funciona.

Sé por que no funciona, pero no se como solucionarlo, alguna idea ?.

Gracias.

En STEP en la primera linea podrias poner:
[gml]
if global.pause == false exit;
[/gml]
de esta forma cualquier accion que haya se deja de ejecutar

Es más fácil si se utilizan variables personalizadas en lugar de las predefinidas de GM.
Normalmente utilizo estas variables: g, vx, vy, v, direction

vx y vy se calculan a partir de v y direction usando lengthdir_*
Incrementa g en cada step y después súmala a vy
Por último suma la velocidad a la posición
[gml]
x += vx;
y += vy;
[/gml]

Todo el proceso anterior se puede encerrar en un if (pause == false)