Hola, te cambio un poco el código que has puesto y te comento
[gml]
//evento step
if (var_movimiento) {
if keyboard_check(vk_left) {
hspeed = -8
image_angle=180;
}
if keyboard_check(vk_right) {
hspeed = 8;
image_angle = 0
}
if keyboard_check(vk_up) {
vspeed = -8
image_angle=90;
}
if keyboard_check(vk_down) {
vspeed = 8
image_angle=270;
}
if keyboard_check(vk_nokey) {
vspeed = 0
hspeed = 0;
}
}
if (!place_meeting(x,y,rainbow_road_colision)) {
hspeed=0;
vspeed=0;
var_movimiento = false;
}
[/gml]
El problema estaba en que no estabas incluyendo bien las lineas de código dentro de los if statement, si no encapsulas todo con corchetes {} el if cogera unicamente la siguiente linea a continuacion.
El resto de lineas se estaban ejecutando siempre.
Edit: Te dejo por aqui otra version del movimiento de tu nave con el código más compacto, un saludo!
[gml]
hspeed = place_meeting(x,y,rainbow_road_colision) ? (keyboard_check(vk_right) - keyboard_check(vk_left))*8 : 0;
vspeed = place_meeting(x,y,rainbow_road_colision) ? (keyboard_check(vk_down) - keyboard_check(vk_up))*8 : 0;
if (keyboard_check(vk_anykey) && place_meeting(x,y,rainbow_road_colision))
image_angle = point_direction(x,y,x+hspeed,y+vspeed);
[/gml]
[gml]
//evento step
if (var_movimiento) {
if keyboard_check(vk_left) {
hspeed = -8
image_angle=180;
}
if keyboard_check(vk_right) {
hspeed = 8;
image_angle = 0
}
if keyboard_check(vk_up) {
vspeed = -8
image_angle=90;
}
if keyboard_check(vk_down) {
vspeed = 8
image_angle=270;
}
if keyboard_check(vk_nokey) {
vspeed = 0
hspeed = 0;
}
}
if (!place_meeting(x,y,rainbow_road_colision)) {
hspeed=0;
vspeed=0;
var_movimiento = false;
}
[/gml]
El problema estaba en que no estabas incluyendo bien las lineas de código dentro de los if statement, si no encapsulas todo con corchetes {} el if cogera unicamente la siguiente linea a continuacion.
El resto de lineas se estaban ejecutando siempre.
Edit: Te dejo por aqui otra version del movimiento de tu nave con el código más compacto, un saludo!
[gml]
hspeed = place_meeting(x,y,rainbow_road_colision) ? (keyboard_check(vk_right) - keyboard_check(vk_left))*8 : 0;
vspeed = place_meeting(x,y,rainbow_road_colision) ? (keyboard_check(vk_down) - keyboard_check(vk_up))*8 : 0;
if (keyboard_check(vk_anykey) && place_meeting(x,y,rainbow_road_colision))
image_angle = point_direction(x,y,x+hspeed,y+vspeed);
[/gml]