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 :)
Y cuál es el efecto que quieres conseguir?
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.
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. ;)
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
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
}