Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Anon en Enero 12, 2018, 01:46:55 AM

Título: Juego tipo Luftrausers
Publicado por: Anon en Enero 12, 2018, 01:46:55 AM
Hola, estoy intentando hacer un juego de aviones sencillo tipo Luftrausers pero no consigo el efecto que quiero. El código que utilizo es este:

if keyboard_check (ord("W"))
{
direction=image_angle
speed+=0.1
}

if keyboard_check (ord("D"))
{
image_angle-=4
}
if keyboard_check (ord("A"))
{
image_angle+=4
}


Estoy muy verde en cuanto a programación, si alguien puede decirme que esta mal o que falta se lo agradecería :)
Título: Re:Juego tipo Luftrausers
Publicado por: Arcadian en Enero 12, 2018, 06:20:21 AM
Y cuál es el efecto que quieres conseguir?
Título: Re:Juego tipo Luftrausers
Publicado por: Anon en Enero 12, 2018, 02:00:05 PM
Quiero que se mueva con en este vídeo https://youtu.be/M9Ui0jUflAk (https://youtu.be/M9Ui0jUflAk)

Con el código que tengo el avión nunca pierde velocidad.
Título: Re:Juego tipo Luftrausers
Publicado por: MateG_ en Enero 12, 2018, 05:49:23 PM
Buenas, si el problema que tenés es que el avión no pierde velocidad podrías probar este código:


if keyboard_check (ord("W"))
{
direction=image_angle
if speed < 15
{
speed+=0.1
}
}
else
{
    if speed > 0
    {
    image_angle = direction
    if direction != 270
    {
        if direction < 90 or direction > 270
        {
            direction -= 5
        }
        else
        {
            direction += 5
        }
    }
    if speed > 7
    {
        speed-=0.1
    }   
    }
}

if keyboard_check (ord("D"))
{
image_angle-=4
}
if keyboard_check (ord("A"))
{
image_angle+=4
}


Lo que hace es que cuando no se está presionando la "W" la velocidad se reduzca hasta la mitad (no a 0 ya que sino el avión tampoco caería) y que la dirección se redirija hacia abajo, haciendo el efecto de caída libre. No se si es ese exacto el efecto que querías pero espero que te sirva. Buena suerte.  ;)
Título: Re:Juego tipo Luftrausers
Publicado por: 3dgeminis en Enero 12, 2018, 07:18:17 PM
Proba a poner solo lo siguiente en el objeto, en el evento STEP para probar:
[gml]
gravity=0.4 ///gravedad
if mouse_check_button(mb_left) {motion_add(point_direction(x,y,mouse_x,mouse_y), 1)} ///direccion y velocidad
if speed>=10 {speed=10} ///limitar velocidad
[/gml]
Se maneja con el raton pero te sera facil cambiarlo a teclas
W --> motion_add
A y D --> direction
Título: Re:Juego tipo Luftrausers
Publicado por: Anon en Enero 12, 2018, 09:12:35 PM
Cita de: MateG_ en Enero 12, 2018, 05:49:23 PM
Buenas, si el problema que tenés es que el avión no pierde velocidad podrías probar este código:


if keyboard_check (ord("W"))
{
direction=image_angle
if speed < 15
{
speed+=0.1
}
}
else
{
    if speed > 0
    {
    image_angle = direction
    if direction != 270
    {
        if direction < 90 or direction > 270
        {
            direction -= 5
        }
        else
        {
            direction += 5
        }
    }
    if speed > 7
    {
        speed-=0.1
    }   
    }
}

if keyboard_check (ord("D"))
{
image_angle-=4
}
if keyboard_check (ord("A"))
{
image_angle+=4
}


Lo que hace es que cuando no se está presionando la "W" la velocidad se reduzca hasta la mitad (no a 0 ya que sino el avión tampoco caería) y que la dirección se redirija hacia abajo, haciendo el efecto de caída libre. No se si es ese exacto el efecto que querías pero espero que te sirva. Buena suerte.  ;)
Con este código cae demasiado bruscamente, pero gracias por tomarte la molestia de ayudarme :)

Cita de: 3dgeminis en Enero 12, 2018, 07:18:17 PM
Proba a poner solo lo siguiente en el objeto, en el evento STEP para probar:
[gml]
gravity=0.4 ///gravedad
if mouse_check_button(mb_left) {motion_add(point_direction(x,y,mouse_x,mouse_y), 1)} ///direccion y velocidad
if speed>=10 {speed=10} ///limitar velocidad
[/gml]
Se maneja con el raton pero te sera facil cambiarlo a teclas
W --> motion_add
A y D --> direction

Es justo lo que buscaba, no conocía la función motion_add, muchas gracias :)

Por si a alguien le interesa el código ha quedado mas o menos así

gravity=0.04 //gravedad

//direccion y velocidad
if keyboard_check (ord("W"))
{
motion_add(image_angle, 1)
}

//limitar velocidad
if speed>=10
{
speed=10
}

//Giro
if keyboard_check (ord("A"))
{
image_angle+=4
}

if keyboard_check (ord("D"))
{
image_angle-=4
}