Me presento, soy santkont y soy argentino. Estoy registrado en esta comunidad desde julio del 2008 y nunca tuve la necesidad de preguntar algo (ya que en esta comunidad no hay pregunta que no se haya hecho).Pero en esta ocaci?n no encontr? (o no supe las palabras claves para buscar) esta pregunta ni su respuesta.
Tengo un personaje que se mueve en las 8 direcciones (vista cenital) y tengo para cada direcci?n su sprite correspondiente. Hasta ah? funciona perfectamente.
Lo que yo quiero hacer es que cuando presiono (vk_space) el sprite_index actual quede fijo mientas yo mantenga presionado dicho bot?n.
En otras palabras, quiero que cuando yo mantenga presionado el espacio el personaje se mantenga mirando para el mismo lado, no importa que yo me mueva (como si fuera un cangrejo, aunque en las 8 direcciones)
Prob? con este tipo de c?digo:
if keyboard_check(vk_space)
{sprite_index=0}
Pero el sprite_index lo toma como el sprite que mira hacia arriba y no el actual (hace lo que yo quiero hacer, pero s?lo con el sprite que mira hacia arriba).
S? que el problema est? en como me expreso en la parte de sprite_index pero no s? como hacerlo bien.
Como hay muchas formas de programar les pongo como es la forma que yo utilic? para el movimiento:
//en movimiento
if keyboard_check(vk_left) {if place_free(x-2,y) x-=2};
if keyboard_check(vk_right) {if place_free(x+2,y) x+=2};
if keyboard_check(vk_up) {if place_free(x,y-2) y-=2};
if keyboard_check(vk_down) {if place_free(x,y+2) y+=2};
//detenido
if keyboard_check_released(vk_left) {x-=0};
if keyboard_check_released(vk_right) {x+=0};
if keyboard_check_released(vk_up) {y-=0};
if keyboard_check_released(vk_down) {y+=0};
Muchas gracias.
(por todo lo que me ayudaron antes)
cambia los sprites de la siguiente manera:
pon en evento step:
if(!keyboard_check(vk_space))//el ! significa que NO
{
if(eyboard_check(vk_left) ) sprite_index = sprite_que_mira_a_la_izquierda
if(keyboard_check(vk_right)) sprite_index = sprite_que_mira_a_la_Derecha
if(keyboard_check(vk_up) ) sprite_index = sprite_que_mira_a_la_arriba
if(keyboard_check(vk_down)) sprite_index = sprite_que_mira_a_la_abajo
}
//cambiara el sprite solo si no esta apretado space
if(!keyboard_check(vk_space))//el ! significa que NO
{
if(keyboard_check(vk_left) ) sprite_index = sprite_que_mira_a_la_izquierda
if(keyboard_check(vk_right)) sprite_index = sprite_que_mira_a_la_Derecha
if(keyboard_check(vk_up) ) sprite_index = sprite_que_mira_a_la_arriba
if(keyboard_check(vk_down)) sprite_index = sprite_que_mira_a_la_abajo
}
Muchas gracias por responder pero con ese c?digo est?s diciendo que si NO se presiona el vk_space cumple esas funciones.
Pero cuando el vk_space SI est? presionado no hace nada (y teniendo en cuenta que uso los mismos botones para moverme, tampoco se mueve), el personaje se queda congelado mientras tengo presionado el vk_space
deveras? ??? ??? ??? ??? ???
probaste asi, ?verdad?
if(!keyboard_check(vk_space))//el ! significa que NO
{
if(keyboard_check(vk_left) ) sprite_index = sprite_que_mira_a_la_izquierda
if(keyboard_check(vk_right)) sprite_index = sprite_que_mira_a_la_Derecha
if(keyboard_check(vk_up) ) sprite_index = sprite_que_mira_a_la_arriba
if(keyboard_check(vk_down)) sprite_index = sprite_que_mira_a_la_abajo
}
//en movimiento
if keyboard_check(vk_left) {if place_free(x-2,y) x-=2};
if keyboard_check(vk_right) {if place_free(x+2,y) x+=2};
if keyboard_check(vk_up) {if place_free(x,y-2) y-=2};
if keyboard_check(vk_down) {if place_free(x,y+2) y+=2};
//detenido
if keyboard_check_released(vk_left) {x-=0};
if keyboard_check_released(vk_right) {x+=0};
if keyboard_check_released(vk_up) {y-=0};
if keyboard_check_released(vk_down) {y+=0};
en el evento step
Que raro...Ahora si.
Habre sido yo...
Pero el personaje no se mueve en diagonales como lo hace cuando no est? presionado el vk_space...
Igual te estoy agradecido, pero si sabes porque pasa eso te agradecer?a muchisimo m?s :-[
eso me resulta bastante raro, los teclados no soportan mas de cierto limite de teclas pero por lo generas si soportan 3, sobretodo si son teclas de distintos tipos.
no se, pero lo de la tecla espacio lo unico que afecta es el sprite, no deveria cambiar para nada el movimiento ???
prueba transferir el evento de la tecla espacio al clic izquierdo o derecho, si de esa manera si funciona supongo que el problema es de el teclado...
Si...Es el teclado... :'(
Bueno, muchas gracias. ;D
?C?mo hago para dar el tema como solucionado?
?Simplemente pongo en el titulo (Solucionado)?