En un proyecto en el que estoy trabajando, quiero que el personaje mire siempre hacia el raton, es decir, que si el raton esta arriba cambie por el sprite que mira hacia arriba, si esta abajo por el sprite que mira abajo, etc. El problema esta que no se como hacerlo. He provado verificando la direccion del raton poniendo esto en el evento step del personage(nombre objeto:pers): point_direction(pers.x,pers.y,mouse_x,mouse_y)
i luego en el mismo evento step esto: if direction=90{sprite_index=sprite13; global.direcion='arriba';direction=90}else{direction= point_direction(x+0,y+0,mouse_x,mouse_y)};
if direction=270{sprite_index=sprite8; global.direcion='abajo';direction=270}else{direction= point_direction(x+0,y+0,mouse_x,mouse_y)};
if direction=180{sprite_index=sprite12; global.direcion='izquierda';direction=180}else{direction= point_direction(x+0,y+0,mouse_x,mouse_y)};
if direction=0{sprite_index=sprite14; global.direcion='derecha';direction=0}else{direction= point_direction(x+0,y+0,mouse_x,mouse_y)};
if global.direcion='arriba' {sprite_index=sprite13;}
if global.direcion='abajo' {sprite_index=sprite8;}
if global.direcion='derecha' {sprite_index=sprite12;}
if global.direcion='izquierda' {sprite_index=sprite14;}
con todo esto lo consigo hacer pero el problema esta en que el raton tiene que estar a 90 grados, si esta a 90,01 no cambia :'( i eso hace que si mueves el raton a una velocidad rapida sea impossible que cambie el sprite
En definitiva necessitaria que alguin me pudiera ayudar ha hacer lo que pido. No importa si cambiais el codigo i en realidad quiero que gire en 8 direcciones pero aun no le hecho los sprites de las diagonales :-[ :-[ :-[
Gracias de antemano
en tal caso pones:
if direction>=45 and direction <135{sprite_index=sprite13; global.direcion='arriba';direction=90}else{direction= point_direction(x+0,y+0,mouse_x,mouse_y)};
if direction>=225 and direction <315{sprite_index=sprite8; global.direcion='abajo';direction=270}else{direction= point_direction(x+0,y+0,mouse_x,mouse_y)};
if direction>=135 and direction <225{sprite_index=sprite12; global.direcion='izquierda';direction=180}else{direction= point_direction(x+0,y+0,mouse_x,mouse_y)};
if direction>=315 and direction <45{sprite_index=sprite14; global.direcion='derecha';direction=0}else{direction= point_direction(x+0,y+0,mouse_x,mouse_y)};
revisa a ver si no me equivoqu? xD
ok, perfecto :)
lo que tube que modificarlo porque no me mirava a la derecha, pero lo resolvi asi:
if direction>=45 and direction <135{sprite_index=sprite13; global.direcion='arriba';direction=90}else{direction= point_direction(x+0,y+0,mouse_x,mouse_y)};
if direction>=225 and direction <314{sprite_index=sprite8; global.direcion='abajo';direction=270}else{direction= point_direction(x+0,y+0,mouse_x,mouse_y)};
if direction>=135 and direction <225{sprite_index=sprite12; global.direcion='izquierda';direction=180}else{direction= point_direction(x+0,y+0,mouse_x,mouse_y)};
if direction<=315 and direction <45{sprite_index=sprite14; global.direcion='derecha';direction=0}else{direction= point_direction(x+0,y+0,mouse_x,mouse_y)};
La verdad que no havia caido en utilizar intervalos en vez de un numero en concreto como hacia :-[ ahora puedo continuar con el proyecto. :)
merci Ruisu~
Ya se habia hecho una pregunta similar, http://www.comunidadgm.org/index.php?topic=10702 y asu vez, en ese post hay un enlace a otro casi de los mismos dias.
Estas respuestas te pueden ayudar.