Hola, gusto en salidarlo...
Cambia el numero uno "1" por la letra v. En tu script estas usando la letra v para definir velocidad y posiblemente la velocidad de movimiento sea mayor que uno, por lo tanto la distancia de colision no debería se uno sinó que debería ser mayor que la velocidad o igual.
Te quedaría algo como esto:
Para moverte diagonalmente puedes sumarle o restarle 45 grados a las direcciones, dependiendo de la tecla que se presione, ejemplo:
Cambia el numero uno "1" por la letra v. En tu script estas usando la letra v para definir velocidad y posiblemente la velocidad de movimiento sea mayor que uno, por lo tanto la distancia de colision no debería se uno sinó que debería ser mayor que la velocidad o igual.
Te quedaría algo como esto:
Código [Seleccionar]
if keyboard_check(vk_right) && place_free(x+v,y)
{
direction = 0;
speed = v;
}
if keyboard_check(vk_up) && place_free(x,y-v)
{
direction = 90;
speed = v;
}
if keyboard_check(vk_left) && place_free(x-v,y)
{
direction = 180;
speed = v;
}
if keyboard_check(vk_down) && place_free(x,y+v)
{
direction = 270;
speed = v;
}
Para moverte diagonalmente puedes sumarle o restarle 45 grados a las direcciones, dependiendo de la tecla que se presione, ejemplo:
Código [Seleccionar]
if keyboard_check(vk_right) && place_free(x+v,y)
{
direction = 0;
if (keyboard_check(vk_up)) {diection=direction+45}
speed = v;
}