¿Como disparo en diagonal? Me gustaria que mi personaje dispare en estas direcciones del lado derecho nada mas, centro, diagonal arriba y diagonal abajo! Esto amerita codigo, pero en serio no se programar y una pregunta de yapa ¿Cual es el mejor metodo para aprender GML sin saber programar?

Antes de poderte ayudar es necesario que nos digas qué tipo de juego quieres hacer y cómo son los controles.

Y pues para aprender GML, lo mejor es seguir tutoriales y leer el manual, al mismo tiempo vas a aprender a programar. Sin embargo, muchas veces la información que se da en los tutoriales no es muy precisa, por lo que te aconsejaría aprender un lenguaje de programación más formal, como C. Existen muchos libros sobre C, fáciles de seguir, por ejemplo el de Deitel Deitel. No te desesperes, para ser un programador experto se necesitan muchos años de estudio,  a menos que seas un genio.

Cita de: Clamud en Marzo 22, 2016, 07:08:09 AM
Antes de poderte ayudar es necesario que nos digas qué tipo de juego quieres hacer y cómo son los controles.

Y pues para aprender GML, lo mejor es seguir tutoriales y leer el manual, al mismo tiempo vas a aprender a programar. Sin embargo, muchas veces la información que se da en los tutoriales no es muy precisa, por lo que te aconsejaría aprender un lenguaje de programación más formal, como C. Existen muchos libros sobre C, fáciles de seguir, por ejemplo el de Deitel Deitel. No te desesperes, para ser un programador experto se necesitan muchos años de estudio,  a menos que seas un genio.

Hola! El tipo de juego seria uno donde el personaje avanza constantemente en el Background y a medida que avanza le aparecen enemigos, y estos enemigos son eliminados mediante bolas que lanza el personaje en esas tres direcciones, diagonal hacia arriba cuando presione la tecla arriba cambiara al sprite mientras la tecla este presionada, cuando no este presionada cambiara a el sprite original y si presiono A mientras mi personaje apunta hacia arriba la pelota saldra en direccion diagonal hacia arriba, centro lo mismo, al presionar la tecla direccional derecha y si presiona a mientras esta asi disparar hacia el centro, y por ultimo disparar en diagonal hacia abajo que vendria siendo lo mismo  algo parecido a la parte del Jetpack en Metal Slug...  y gracias por el consejo, no he entrado a la programacion porque me he sobrecargado de hobbies D: No se si me explico muy bien

Si te pones en serio, C se domina lo más basico en unos meses y luego GML es bastante más sencillo, pero requiere algo de compromiso para practicarlo, sobre todo al comienzo. Te recomendaria que contrates un profesor particular que te guie en caso de que te cueste ponerte a trabajar.

Se puede hacer con un código como este en el evento Step:
[gml]
//ejes de movimiento (joystick)
jx = keyboard_check(vk_right) - keyboard_check(vk_left);
jy = keyboard_check(vk_down)  - keyboard_check(vk_up);

//mantener en un rango circular
j = sqrt( jx*jx + jy*jy );
if( j > 1 ){
    jx /= j;
    jy /= j;
}

//mover al personaje
x += jx*v; //(v = velocidad)
y += jy*v;

//disparar
if keyboard_check_pressed( vk_space )
with instance_create( x,y, obj_bala )
{
    speed = 12321; //velocidad de la bala
    if( other.jy < 0 ) direction = 45;
    else if( other.jy > 0 ) direction = 315;
    else direction = 0; //direccion de la bala
}

//sprite del personaje
switch( jy ){
    case -1: sprite_index = spr_arriba; break;
    case  0: sprite_index = spr_frente; break;
    case  1: sprite_index = spr_abajo;  break;
}
[/gml]
Me gusta usar dos variables como si fueran los ejes de un joystick para evitar que el movimiento sea más rápido en diagonal.
La dirección de la bala también se podría asignar con un switch-case, como se hace con el sprite. Revisa la velocidad de la bala, porque puse un valor exagerado.

Cita de: Clamud en Marzo 22, 2016, 04:25:36 PM
Se puede hacer con un código como este en el evento Step:
[gml]
//ejes de movimiento (joystick)
jx = keyboard_check(vk_right) - keyboard_check(vk_left);
jy = keyboard_check(vk_down)  - keyboard_check(vk_up);

//mantener en un rango circular
j = sqrt( jx*jx + jy*jy );
if( j > 1 ){
    jx /= j;
    jy /= j;
}

//mover al personaje
x += jx*v; //(v = velocidad)
y += jy*v;

//disparar
if keyboard_check_pressed( vk_space )
with instance_create( x,y, obj_bala )
{
    speed = 12321; //velocidad de la bala
    if( other.jy < 0 ) direction = 45;
    else if( other.jy > 0 ) direction = 315;
    else direction = 0; //direccion de la bala
}

//sprite del personaje
switch( jy ){
    case -1: sprite_index = spr_arriba; break;
    case  0: sprite_index = spr_frente; break;
    case  1: sprite_index = spr_abajo;  break;
}
[/gml]
Me gusta usar dos variables como si fueran los ejes de un joystick para evitar que el movimiento sea más rápido en diagonal.
La dirección de la bala también se podría asignar con un switch-case, como se hace con el sprite. Revisa la velocidad de la bala, porque puse un valor exagerado.

Me sale esto :s

ERROR in
action number 1
of  Step Event
for object obj_horoycenter:

Error in code at line 18:
   x += jx*v; //(v = velocidad)
           ^
at position 10: Unknown variable v

El mismo mensaje indica el problema: La variable v es desconocida, o sea, que no se le ha dado un valor, y por lo tanto no se puede hacer una operación con ella.
Le debes asignar un valor en el evento Create, o escribir un número directamente.