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 - Dager

1
Preguntas y respuestas / Ayuda física "básica"
Julio 19, 2020, 10:02:59 PM
-Buenas, programadores/desarrolladores! ¿Que tal están hoy?

Iré directo al grano y para no dar muchas vueltas... Actualmente estoy desarrollando un videojuego en 2d.
Realmente lo comencé hace bastante, aunque mi idea de crear un videojuego la tengo desde el origen de los tiempos.
El caso es que, en un momento dado me di cuenta que lo mejor que puedo hacer para solucionar algunos bugs y
añadir las cosas mas "avanzadas" de mi juego (que son DEMASIADAS) pues... Sería necesario hacerle un rework a
mi código.
Supongo que todo lector aquí sabe o esta familiarizado con la palabra "rework", pero para quien no, pues basicamente
comenzar el código otra vez, desde 0, tomando algunas cosas del antiguo código pero mejorandolo mucho para que...
No solo funcione mejor, se optimize y consuma menos recursos (que por ahora ni se nota los recursos que consume
el juego pero, ya saben lo que dicen, cuanto mas limpio sea tu código y mas optimización exista al principio del
desarrollo de tu juego, pues mejor para no arrastrar bugs a versiones finales y romperse la cabeza en solucionarlos),
sino también, ayudar a un mejor entendimiento de mi código.

¿A qué me refiero con mi "entendimiento de código? ¿Acaso no sabes como funciona tu propio código?
Pues si, y no... Como verán, soy un programador muy begginer, y... Pues si, se lo que estas pensando, me meti en un
terreno muy fuerte para mi como primer juego.
El punto, lo que llevo de código hasta ahora, funciona casi todo correctamente, el problema es que algunos fragmentos
de las físicas del mismo, fueron tomados por genios que crearon buenos algoritmos (en el mismo gamemaker, obviamente).
Pues nada, que la física no es mi fuerte, y luego de dejar mi proyecto un buen tiempo para tomarme un descanzo (luego
de darme cuenta de que debo reprogramar mi juego, que en el código tampoco soy muy bueno que digamos, me falta
mucha práctica), ahora decidi que tengo energia y ganas de continuar... Pero ver mi código es como ver un cógido
que solo Dios entiende. Es decir, esta comentado, la mayoria de cosas las entiendo pero justamente las mas importantes
de la fisica, pues no tengo idea... Funciona y no se como (como todos los programadores dicen, si algo funciona mejor no
lo toques).
Soy un programador/desarrollador que a pesar de ser muy novato y estar haciendo mi primer juego, me interesa fuertemente
entender al 100% como funciona el mismo y como va mi código, mas ahora que esta en el comienzo y no esta tan jodido
como estará en su version final.
¿Y que mejor manera de entenderlo que pedir ayuda sobre física básica en este foro? Estoy seguro que varios de ustedes
podrán explicarme en terminos de programador varias cosas...

En fin, en mi juego hay gravedad, puedes trepar paredes, saltar, saltar doble, agacharte, caminar (correr aun no pero planeo
eso y avanzar agachado también) e incluso saltar agarrandote a las paredes (y si te quedas agarrado de la pared sin subir
por la misma, en unos segundos empiezas a caer porque el personaje se queda sin fuerza para mantenerse).
Y planeo ponerle mucho mas...

La información que necesito... Mi juego tiene fricción con el aire, fricción con el suelo y por mas que lo lea mil veces, no
logro entender como es que funciona... Pero, estoy seguro que muchos de ustedes estan familiarizados con estos
términos y saben como hacer que funcionen entre si, etc.
Tambien tiene velocidad en X, velocidad en Y, vamos... Cosas que son necesarias en un juego 2d de este tipo para que
todo funcione con lógica, pero cuando termino de entender una cosa... Dejo de entender otra.
Necesito bases bien explicadas de como va y como funcionaría casa cosa, se que todos los códigos son distintos
generalmente, pero todos funcionan de manera similar (y personalmente tuve que adaptar a mi código los
códigos ajenos que encontre ya que como dije, los códigos son unicos y a veces tienes que hacerles modificaciónes
para que se adapte a tus necesidades y/o requisitos).

Les agradezco a todos su atención y su tiempo. Que tengan un buen día!
-Dager
2
Cita de: BssString en Marzo 22, 2020, 03:47:30 AM
Hola Dager

En el "Step End Event" del Objeto cuchillo.
[gml]x = obj_player.x
y = obj_player.y + 20[/gml]
Ese código hará que el objeto "cuchillo" se mueva a la posición de mi objeto "obj_player", pero 20 pixeles hacia abajo (tú ponle como hayas llamado a tu objeto y en la coordenada respectiva según el tamaño de tus sprites y los puntos de origenes)

Si dices que la animación de ataque con el cuchillo tiene 3 sprites, al crearlo debes hacer que la animación no se ejecute hasta que sueltas la tecla "K".
En el "Create Event" del Objeto cuchillo:
[gml]image_speed = 0 //Esto evita que la animación se dibuje[/gml]

Hace que el ataque se ejecute al soltar la tecla.
En el "Step Event" normal del Objeto cuchillo, coloca:
[gml]if keyboard_check_release(ord("K")) {
image_speed = 1 //Esto reactiva la animación. Si la animación va muy rápido, en vez de 1, ponle una velocidad más lenta, ej: 0.25, eso hará que la animación avance 1 sub-imagen cada 4 steps.
}[/gml]

En el evento "End Animation" del Objeto cuchillo (que está en other), ponle que haga daño a los enemigos y una alarma que desaparezca la mano con cierto delay.
ejemplo:
if image_speed != 0 { //Esta condición hace que el ciclo de animación no se repita y el tiempo de la Alarma se ejecute sólo 1 vez.
image_speed = 0 //Cuando termina la animación, esta línea frena nuevamente la animación hasta que la mano desaparece
alarm[0] = 6 //Esto activa una alarma en 6 Steps para poder eliminar la mano.
}


en "Alarm[0]" del Objeto cuchillo, después de que pasan esos 6 Steps:
[gml]instance_destroy() //Elimina la mano con el cuchillo cuando se activa la alarma 0[/gml]

Está de más decir que el player NO puede crear otro cuchillo hasta que el primero desaparezca, añade una condición para revisar si el objeto ya existe antes de crearlo
En el Step Event del Personaje
[gml]if keyboard_check_pressed(ord("K")) && !instance_exists(obj_cuchillo) { instance_create(x,y,obj_cuchillo) }[/gml]

Saludos

Muchas gracias! Por responder y por haber solucionado una parte de todos los problemas y bugs que estoy teniendo con la creación de mi
"primer videojuego" intentando no abandonar el proyecto xD.

Los codigos que enviaste han funcionado correctamente! Eres un genio.
3
Buenas a todos!

Necesito una mano con mi código en un juego que estoy programando, ya que me esta dando demasiados problemas.

Estoy trabajando en un juego 2d de plataformas.
Intento programar un ataque cuerpo a cuerpo con una cuchilla al usar la tecla K, pero no tan simple.

Lo que quiero lograr es, que al mantener presionada la tecla K, el personaje muestre que tiene una cuchilla en su mano
(y puedas moverte libremente con ella en la mano) pero, al momento de soltar la tecla K, este realice un corte hacia
adelante y al terminar la animación, la esconda.

Para ser mas específicos, la mano con la cuchilla es un objeto distinto del personaje. Se que si quiero que este objeto
(la mano con el cuchillo) permanezca oculto, tengo que esconderlo por default... Y mostrarlo al presionar la tecla K
(obviamente, debo hacer que la mano con el cuchillo siga al personaje estando encima de este, para que parezca
que forma parte del mismo sprite del personaje aunque no sea así) y luego, al soltarla hacer la animacion del corte
para volver a ocultarse (el objeto de la mano con cuchillo) al terminar la animacion.

Obviamente, ya tengo todos los sprites dibujados.
Lo que estoy usando al principio del codigo de este objeto es...

keyAttack          = keyboard_check_pressed(ord("K"));        //Comprueba si la tecla K esta siendo presionada
keyAttackRelease   = keyboard_check_released(ord("K"));       //Comprueba si se dejo de presionar la tecla K

Pero, tengo muchos problemas como por ejemplo, no logro que la mano siga al personaje al mantener la tecla K,
este objeto simplemente se queda fijo en la ultima posicion donde estuvo el personaje cuando fue llamada.
Y tampoco logro que la animacion funcione correctamente al soltar la tecla K, son 3 sprites los del objeto de
la mano con el cuchillo.
He intentado de todo y me tiene super cansado. Agradecería que puedan ayudarme con esto.

Muchas gracias!