El movimiento se hace con seno y coseno... lo de multiplicar por pi/180 es por que el calculo de esta posicion se tiene que hacer en radianes y no en grados... tambien podrias usar:
[gml]
//Para arriba
if (keyboard_check(vk_up)){
x += cos(degtorad(direction))*Vel;
y -= sin(degtorad(direction))*Vel;
}
//Para abajo puedes invertir el + y -
if (keyboard_check(vk_down)){
x -= cos(degtorad(direction))*Vel;
y += sin(degtorad(direction))*Vel;
}
//Para los lados sumas 90 a la direccion
if (keyboard_check(vk_down)){
if (keyboard_check(vk_control)){
direction += 6;
}else{
x += cos(degtorad((direction+90)))*Vel;
y -= sin(degtorad((direction+90)))*Vel;
}
}
//Y Para izquierda inviertes los + y -
if (keyboard_check(vk_down)){
if (keyboard_check(vk_control)){
direction += 6;
}else{
x -= cos(degtorad((direction+90)))*Vel;
y += sin(degtorad((direction+90)))*Vel;
}
}
[/gml]
Esa es una manera basica de escribirlo... Para ahorar codigo puedes poner
[gml]
var adelante, lateral;
adelante = keyboard_check(vk_up)-keyboard_check(vk_down);
lateral = keyboard_check(vk_left)-keyboard_check(vk_right);
if (adelante != 0){
x += cos(degtorad(direction))*Vel*adelante;
y -= sin(degtorad(direction))*Vel*adelante;
}
if (lateral != 0){
if (keyboard_check(vk_control)){
direction += 6*lateral;
else{
x += cos(degtorad((direction+90)))*Vel*lateral;
y -= sin(degtorad((direction+90)))*Vel*lateral;
}
}
[/gml]
Saludos....
[gml]
//Para arriba
if (keyboard_check(vk_up)){
x += cos(degtorad(direction))*Vel;
y -= sin(degtorad(direction))*Vel;
}
//Para abajo puedes invertir el + y -
if (keyboard_check(vk_down)){
x -= cos(degtorad(direction))*Vel;
y += sin(degtorad(direction))*Vel;
}
//Para los lados sumas 90 a la direccion
if (keyboard_check(vk_down)){
if (keyboard_check(vk_control)){
direction += 6;
}else{
x += cos(degtorad((direction+90)))*Vel;
y -= sin(degtorad((direction+90)))*Vel;
}
}
//Y Para izquierda inviertes los + y -
if (keyboard_check(vk_down)){
if (keyboard_check(vk_control)){
direction += 6;
}else{
x -= cos(degtorad((direction+90)))*Vel;
y += sin(degtorad((direction+90)))*Vel;
}
}
[/gml]
Esa es una manera basica de escribirlo... Para ahorar codigo puedes poner
[gml]
var adelante, lateral;
adelante = keyboard_check(vk_up)-keyboard_check(vk_down);
lateral = keyboard_check(vk_left)-keyboard_check(vk_right);
if (adelante != 0){
x += cos(degtorad(direction))*Vel*adelante;
y -= sin(degtorad(direction))*Vel*adelante;
}
if (lateral != 0){
if (keyboard_check(vk_control)){
direction += 6*lateral;
else{
x += cos(degtorad((direction+90)))*Vel*lateral;
y -= sin(degtorad((direction+90)))*Vel*lateral;
}
}
[/gml]
Saludos....