Buenos Días, tardes y noches, Tengo un problema, yo quería hacer que mi personaje corriera así que escribí el código "if keyboard_check(vk_shift)
{y = y+4; image_speed = 0.3;}" y poz para hacer que pare puse este código "if keyboard_check(vk_nokey) {image_speed = 0; image_index = 0; speed = 0;}" y poz yo supuse que el sprite iba a para de moverse, pero el caso es que mientras no deje de presionar el shift no se deja de mover el sprite, pero yo quisiera que se deje de mover cuando debas de presionar la tecla de moverse. Y eso es todo, espero que hayan entendido y que alguien me pueda ayudar
Está algo confuso el planteo que haces con tu título y lo que describes.
Primero el evento nokey significa que se activará cuando no haya ninguna tecla pulsada, entonces lógicamente el personaje y su sprite no se detendrá hasta soltar shift (y cualquier otra), así que para estas cosas no es buena idea usar nokey.
¿Exactamente cómo deseas que funcione el correr del personaje? porque en general siempre queremos que siga moviéndose mientras tenemos presionada la tecla para andar. No me queda claro cual es la circunstancia que buscas para que deje de moverse ¿choca contra una pared? ¿tienes que presionar hacia una dirección para que corra hacia allí? ¿quieres que se mueva 4 pixeles hacia abajo sólo una vez, hasta volver a presionar shift?
Primero, perdón por hacer tan confuso este post y respecto a lo q quiero, pues quiero hacer que el personaje corra con las teclas de moverse obvio pero que sea mientras presiono la tecla shift, y que después de presionar la tecla de moverse que se deje de mover el sprite.
Hola,
Has puesto un icono de sprite al post pero lo que preguntas no es sobre sprites si no sobre el codigo, asi que mejor pon el icono de la versión de GM que estas utilizando.
Gracias, lo tendré en cuenta para otra ocación
Ahora sí creo que entiendo mejor el problema.
Necesitas una forma de detectar que el personaje está en estado de movimiento para que se active la animación de correr, hay varios métodos pero yo el que te recomiendo es que crees una variable que indique cuando nos estamos moviendo:
En el evento create del personaje crea una variable llamada moviendo
[gml]
moviendo = 0;
[/gml]
y en el evento step pones lo siguiente (hice un pequeño ejemplo):
[gml]
moviendo = 0; //por defecto no se está moviendo si no hay ninguna tecla presionada
//Direcciones de movimiento-------------------------
if keyboard_check(vk_left)
{
x -=5;
if keyboard_check(vk_shift)
{
x -=8;
}
moviendo = 1; //ahora sí se está moviendo
}
if keyboard_check(vk_right)
{
x +=5;
if keyboard_check(vk_shift)
{
x +=8;
}
moviendo = 1; //igual
}
if keyboard_check(vk_up)
{
y -=5;
if keyboard_check(vk_shift)
{
y -=8;
}
moviendo = 1; //igual
}
if keyboard_check(vk_down)
{
y +=5;
if keyboard_check(vk_shift)
{
y +=8;
}
moviendo = 1; //igual
}
//Animación al correr-------------------------------
if keyboard_check(vk_shift) and moviendo == 1 //si se presiona shift y está en estado moverse
{
image_speed = 0.3;
}
else //sino
{
image_speed = 0; //sprite quieto
image_index = 0; //opcionalmente volverá al sprite 0 cuando pare la animación
}
[/gml]
Y por las dudas te adjunto el ejemplo que yo mismo hice aquí en el post para que veas como funciona.
En verdad muchas gracias, y perdón por las molestias