Marzo 20, 2020, 03:06:15 PM Ultima modificación: Marzo 20, 2020, 03:34:18 PM por HiperGlue
¡Hola a todos! Estoy haciendo un proyecto y ahora me estoy dando contra la pared para resolver un código. Mi problema es este, tengo 3 objetos. Estos objetos son botones, y lo que quiero es que bajen para abajo. Voy a explicar el contexto, el juego inicia con un menú, este menú tiene dos estados: "start" y "menu"; En el estado start NO quiero que los botones bajen hacia abajo, solo quiero que se muestre una pantalla con un titulo y un texto que dice "Pulsa cualquier botón para empezar".
Para pasar al modo "menu", simplemente le das a cualquier botón del teclado. Ok, ahora viene el problema. Al pulsar cualquier tecla el texto desaparece y el menú cambia al modo "menu". Al pasar al modo menu si que me interesa que los botones vayan hacia abajo y quedaran visibles (es decir en el centro de la pantalla). Esto lo hago con un objeto llamado cinematic. En el objeto, le indico en el evento "Create" esto:

obj_Exit.vspeed = 1;
obj_Options.vspeed = 1;
obj_Start.vspeed = 1;

alarm[0] = 60;


(También resaltar que, el objeto cinematic ya lo tengo programado para que se cree en la room.)

Y en la alarma 0 quiero que los valores "vspeed" de los objetos "obj_Exit, obj_Options, obj_Start" pasen de 1 a 0 (El número 1 es de ejemplo, para probar, despues este número lo cambiaría a 10 o 5)

Ahora viene el problema, la alarma no se ejecuta. Los botones van hacia abajo sin parar, y yo no quiero eso, quiero que se paren en el centro de la pantalla.
¿Alguien tiene una solución  a este problema?

[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Cita de: kostra en Marzo 20, 2020, 04:18:30 PM
Mira lo que estás usando

https://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/movement/vspeed.html

Consejo, lee el manual.

Pero el problema no es con la velocidad vertical de los objetos, el problema es que la alarma no se ejecuta, la velocidad vertical va perfectamente bien. Pero quiero que pare automaticamente.

Hola HiperGlue

Mi consejo es que en vez de usar una alarma, cada botón tenga una velocidad y una "coordenada objetivo" a la que debe llegar.
ejemplo:
En el Create Event:
[gml]y = 0 //Esta línea es irrelevante y se puede borrar porque al crear el objeto ya asignas su Y, pero es para que entiendas la idea de lo que hace el código.
y_objetivo = 300 //La coordenada final a la que debe bajar el botón.
velocidad = 10 //La cantidad de pixeles que sumará en cada STEP[/gml]

En el Step lo mueves:
[gml]if y != y_objetivo {
y = min(y+velocidad, y_objetivo)
}[/gml]
La función "MIN" es para evitar que la coordenada se pase, cuando la coordenada objetivo NO es múltiplo de la velocidad

Nota: Si los 3 botones son el mismo objeto, debes crearles variables diferente, sino los 3 botones bajarán "para abajo" hasta el mismo "y_objetivo", eso lo puedes hacer de varias maneras, ya sea creandolos desde otro objeto y pasandoles variables de creación o editando el "Creation Code" en el editor de rooms de Game Maker, dandole clic secundario a la instancia.

Saludos