Estoy terminando los movimientos de un personaje, y cuando toco la tecla "S" el personaje da un golpe. Ahora necesito hacer que lo haga pero mientras esta agachado, osea mientras mantengo presionada la tecla de dirección hacia abajo y presiono la tecla de golpe.
Estoy usando (keyboard_check(vk_down)) y (keyboard_check_pressed(ord("S"))), y probe con el codigo mas comun:
if (keyboard_check(vk_down)) && (keyboard_check_pressed(ord("S")))
pero no funciona, estuve leyendo que a veces puede ser problema del teclado, pero no es mi caso.
Tambien me fije si habia algun error en sprite_index e image_index pero pareciera que esta todo bien.
Como puedo hacer?
Podrías probar creando una "variable bandera" que te serviría únicamente para testeo. En el evento Create poné algo como "compruebaDisparo = false;", después, en el evento donde pones el if ese, dentro del if poné algo como "compruebaDisparo = true;" y después para ver si se está seteando esa variable podes imprimirla en pantalla con "draw_text(0,0,string(compruebaDisparo"));", eso tendría que imprimir TRUE o FALSE en la posición 0-0 de la pantalla. Si tenes un objeto control que no tiene sprites podes poner ese código (como siempre y con todos los draw_) en el evento Draw y ponerlo de esta forma: "draw_text(0,0,string(obj_personaje.compruebaDisparo"));", donde "obj_personaje" tendría que ser reemplazado por el nombre de tu objeto personaje.
Probá poniendo eso así para comprobar si está funcionando bien el IF, si se pone en TRUE debe ser ya otro problema y no del IF.
He aqui la importacia de los FSM (finite state machines). Me estoy planteando subir un engine que estoy creando especificamente basado en esto... en Marketplace.
Ahi hice la prueba y definitivamente es un problema del "if". Probé de la misma manera pero manteniendo la tecla hacia arriba y en este caso hace la animación del golpe hacia arriba pero solo luego de presionar la tecla de golpe dos veces rápidamente, si la presiono una hace el golpe normal, por mas que este presionando hacia arriba. Lo extraño es que si es el mismo codigo que el de la tecla hacia abajo, por que en un caso corre la animacion y en otro no? Definitivamente es un problema del "if" porque en ambos casos no funciona como debería.
Alguna solucion?? Es lo unico que me faltaria para completar los movimientos del personaje, tendrá algo que ver que una tecla sea "keyboard_check_pressed"(la del golpe) y la otra sea "keyboard_check"??
Probá ponerle solamente "keyboard_check" o cambia las dos a "keyboard_check_pressed", por ahí puede empezar a fallar al no ser del mismo tipo.
Si, ya habia probado, pero al modificar eso se me modificaba todo el resto del codigo.
Ya lo solucione de la forma mas simple: hice una variable llamada "up" que solo sea verdadera cuando se presiona hacia arriba, y si presiono golpe, este se ejecuta hacia arriba. Al soltar la tecla , "up" vuelve a ser falsa, y si presiono la tecla de golpe, se ejecuta el golpe normal. De la misma manera, solucione el golpe mientras esta agachado.
Gracias igual a todos por su tiempo, saludos!