Beautiful Drea season 14 episode 19 | Télécharger Part 3 | Hoe kan ik zelf een beoordeling geven aan een film of serie?Chevron right

Un poco de ayuda?

OP
Mensajes
4
Puntos
1
#1
Hola, acabo de empezar a programar en game maker. Se lo básico sobre el gml y poco más, pero, cuando pienso en futuros proyectos, siempre se me viene a la mente un problema...
¿Cómo puedo hacer que pase cierto tiempo entre eventos? Es decir, que pase algo y, un tiempo determinado por mi después, pase otra cosa
Posiblemente sea algo muy fácil,pero,no se hacerlo y necesito ayuda (Por cierto, quiero aprender a hacerlo en código)
 

Khyze

Muchos merecen morir!
Colaborador
Mensajes
4.417
Calificaciones
2K 22
Puntos
325
Ubicación
Patria, patria, patria querida!
#2
Hola, acabo de empezar a programar en game maker. Se lo básico sobre el gml y poco más, pero, cuando pienso en futuros proyectos, siempre se me viene a la mente un problema...
¿Cómo puedo hacer que pase cierto tiempo entre eventos? Es decir, que pase algo y, un tiempo determinado por mi después, pase otra cosa
Posiblemente sea algo muy fácil,pero,no se hacerlo y necesito ayuda (Por cierto, quiero aprender a hacerlo en código)
Depende de ese "algo" que quieras hacer, siempre la respuesta sera "variables", aqui un ejemplo:

Create
Código:
eventemporizador=0;
Step
Código:
eventemporizador+=1;

if eventemporizador>=0 and eventemporizador<=10 x+=5; else
if eventemporizador>=20 and eventemporizador<=30 x-=5; else
if eventemporizador=40 show_message("Ai laik maincra");
Eso hara que el personaje se mueva a la derecha, espere un poco, luego a la izquierda, espere otro poco y diga algo (Como si estuviera pensando), para mas complejidad se necesitarian mas variables (obviamente), para comenzar si quieres usa la mayor cantidad que se te haga comodo (Para que lo logres por lo menos), luego cada vez intenta utilizar lo menos posible (Comodo o no, ya lo lograste, solo queda perfeccionarlo/optimizarlo)

Yo prefiero hacer una cinematica por code que prerenderizada (Claro, si veo que es posible), es rapido, ligero y tecnicamente mejor. (Imaginate si es uno 2D y en una cinematica utilizas los mismos sprites de los personajes, obviamente seria mejor codearla que "animarla frame por frame")
 
OP
Mensajes
4
Puntos
1
#3
Gracias! Ya había pensado en usar variables en step, pero pensaba que no serviría o no seria la mejor manera...por cierto, Qué es "else"? he visto que la mayoría lo usan bastante y me gustaría saber para que sirve smiling_face_with_open_mouth_and_cold_sweatsmiling_face_with_open_mouth_and_cold_sweat
 
OP
Mensajes
4
Puntos
1
#4
Depende de ese "algo" que quieras hacer, siempre la respuesta sera "variables", aqui un ejemplo:

Create
Código:
eventemporizador=0;
Step
Código:
eventemporizador+=1;

if eventemporizador>=0 and eventemporizador<=10 x+=5; else
if eventemporizador>=20 and eventemporizador<=30 x-=5; else
if eventemporizador=40 show_message("Ai laik maincra");
Eso hara que el personaje se mueva a la derecha, espere un poco, luego a la izquierda, espere otro poco y diga algo (Como si estuviera pensando), para mas complejidad se necesitarian mas variables (obviamente), para comenzar si quieres usa la mayor cantidad que se te haga comodo (Para que lo logres por lo menos), luego cada vez intenta utilizar lo menos posible (Comodo o no, ya lo lograste, solo queda perfeccionarlo/optimizarlo)

Yo prefiero hacer una cinematica por code que prerenderizada (Claro, si veo que es posible), es rapido, ligero y tecnicamente mejor. (Imaginate si es uno 2D y en una cinematica utilizas los mismos sprites de los personajes, obviamente seria mejor codearla que "animarla frame por frame")

Gracias! Pero...sigo necesitando ayuda para algo...quizá sea aún más básico pero...¿Cómo puedo hacer un personaje que salte en un juego 2D lateral usando código? He estado buscando información pero no encuentro nada
 

Khyze

Muchos merecen morir!
Colaborador
Mensajes
4.417
Calificaciones
2K 22
Puntos
325
Ubicación
Patria, patria, patria querida!
#5
Gracias! Ya había pensado en usar variables en step, pero pensaba que no serviría o no seria la mejor manera...por cierto, Qué es "else"? he visto que la mayoría lo usan bastante y me gustaría saber para que sirve smiling_face_with_open_mouth_and_cold_sweatsmiling_face_with_open_mouth_and_cold_sweat
No le temas a las variables, usalas, muchas dudas se crean es por que la gente al comenzar siente una especie de miedo xD

Sobre el "else" es como "sino" (Si la vida es menor a 0, moriras sino/else viviras), sirve para optimizar el codigo, por ejemplo, ese que escribi:
Código:
if eventemporizador>=0 and eventemporizador<=10 x+=5; else
if eventemporizador>=20 and eventemporizador<=30 x-=5; else
if eventemporizador=40 show_message("Ai laik maincra");
Como vez son 3 condicionales (En realidad son 5, pero contemosla como 3, esas que separe en lineas o else), al utilizar else, lo que hace el motor es saltar el resto si ya se cumplio alguno de los primeros, por lo que si el temporizador es 5, el codigo se "transformaria" a
Código:
if eventemporizador>=0 and eventemporizador<=10 x+=5;
Si es 25 seria
Código:
if eventemporizador>=0 and eventemporizador<=10 x+=5; else
if eventemporizador>=20 and eventemporizador<=30 x-=5;
Si es de los ultimos practicamente no existiria la optimizacion (Pero si haces eso es por que utilizaras los primeros en algun momento por lo que si habra optimizacion), la alternativa de no utilizar "else" es que sin importar los valores, siempre se ejecutara completo, no se omitira/optimizara nada, similar al utilizar "exit" o "break" (Uno es general para el codigo y el otro para loops como while, for, repeat. el exit si se usa en un script llamado, saldra del script pero el codigo de el que lo llamo igual se ejecutara)

Pero para principiantes creo que no importa mucho (Siempre y cuando lo aprendas/incorpores luego cuando se complique menos), yo suelo omitir el else a principios (Flojera?) pero luego cuando reviso el codigo acomodo algunas cosas incluyendo la incorporacion de else :D

Gracias! Pero...sigo necesitando ayuda para algo...quizá sea aún más básico pero...¿Cómo puedo hacer un personaje que salte en un juego 2D lateral usando código? He estado buscando información pero no encuentro nada
Eso ya es un poco mas complicado ("Largo" en codigo y varia dependiendo el sistema de colisiones que quieras)

Hechale un vistazo a este tema (Con las fotos te haces una idea)
Lista de Engines y Examples de Game Maker

Aqui unos 3 que quizas te sirvan
Plataformas-shooter 1.2
Plataformas estilo 2.5D

Podran serte de ayuda, yo aprendi descargando cosas como estas y ver como funcionaba su codigo (Eso y preguntando por aqui y por alla :p)
Metal Slug Engine

Tengo todos descargados por si alguno se cae, este en especifico tiene este codigo (Recuerdo usarlo mucho, llevo tiempo sin usarlo por que utilizo uno propio con variables "mias", aunque lo mejor es usar las funciones/variables prehechas por el motor, asi que -1 para mi :p)

Step
Código:
//GRAVEDAD
gravity_direction=270
if place_free(x,y+1)
gravity=.8;
else
gravity=0;
Salto (Step con keyboard_check(ord("WASD")) o en un event de tecla)
Código:
if not place_free(x,y+1)
vspeed-=10;
if not place_free(x,y+1) tambien puede escribirse como:
if !place_free(x,y+1) que es como suelo hacerlo xD (Es mas corto :v)
 
OP
Mensajes
4
Puntos
1
#6
No le temas a las variables, usalas, muchas dudas se crean es por que la gente al comenzar siente una especie de miedo xD

Sobre el "else" es como "sino" (Si la vida es menor a 0, moriras sino/else viviras), sirve para optimizar el codigo, por ejemplo, ese que escribi:
Código:
if eventemporizador>=0 and eventemporizador<=10 x+=5; else
if eventemporizador>=20 and eventemporizador<=30 x-=5; else
if eventemporizador=40 show_message("Ai laik maincra");
Como vez son 3 condicionales (En realidad son 5, pero contemosla como 3, esas que separe en lineas o else), al utilizar else, lo que hace el motor es saltar el resto si ya se cumplio alguno de los primeros, por lo que si el temporizador es 5, el codigo se "transformaria" a
Código:
if eventemporizador>=0 and eventemporizador<=10 x+=5;
Si es 25 seria
Código:
if eventemporizador>=0 and eventemporizador<=10 x+=5; else
if eventemporizador>=20 and eventemporizador<=30 x-=5;
Si es de los ultimos practicamente no existiria la optimizacion (Pero si haces eso es por que utilizaras los primeros en algun momento por lo que si habra optimizacion), la alternativa de no utilizar "else" es que sin importar los valores, siempre se ejecutara completo, no se omitira/optimizara nada, similar al utilizar "exit" o "break" (Uno es general para el codigo y el otro para loops como while, for, repeat. el exit si se usa en un script llamado, saldra del script pero el codigo de el que lo llamo igual se ejecutara)

Pero para principiantes creo que no importa mucho (Siempre y cuando lo aprendas/incorpores luego cuando se complique menos), yo suelo omitir el else a principios (Flojera?) pero luego cuando reviso el codigo acomodo algunas cosas incluyendo la incorporacion de else :D


Eso ya es un poco mas complicado ("Largo" en codigo y varia dependiendo el sistema de colisiones que quieras)

Hechale un vistazo a este tema (Con las fotos te haces una idea)
Lista de Engines y Examples de Game Maker

Aqui unos 3 que quizas te sirvan
Plataformas-shooter 1.2
Plataformas estilo 2.5D

Podran serte de ayuda, yo aprendi descargando cosas como estas y ver como funcionaba su codigo (Eso y preguntando por aqui y por alla :p)
Metal Slug Engine

Tengo todos descargados por si alguno se cae, este en especifico tiene este codigo (Recuerdo usarlo mucho, llevo tiempo sin usarlo por que utilizo uno propio con variables "mias", aunque lo mejor es usar las funciones/variables prehechas por el motor, asi que -1 para mi :p)

Step
Código:
//GRAVEDAD
gravity_direction=270
if place_free(x,y+1)
gravity=.8;
else
gravity=0;
Salto (Step con keyboard_check(ord("WASD")) o en un event de tecla)
Código:
if not place_free(x,y+1)
vspeed-=10;
if not place_free(x,y+1) tambien puede escribirse como:
if !place_free(x,y+1) que es como suelo hacerlo xD (Es mas corto :v)

Gracias....sigo sintiéndome muy estancado y sigo sin saber hacer prácticamente nada pero...Gracias :)