Verán que. Yo quiero que el sprite cambie dependiendo en que parte este el mouse, a lo Enter the gungeon, pero nose como hacerlo y no he encontrado un tutorial para eso. Se mas o menos que tengo que usar el sistema de grados que tiene GameMaker pero no encuentro alguna función para eso, quien me puede ayudar :(

podrias plantearme mejor el problema? es que no entiendo bien lo que quieres lograr

si lo que quieres es que tu prota "personaje" se mueva en torno a el mouse puedes poner en un evento steep de el mismo el siguiente codigo:
[gml]
image_angle = point_direction(x,y,mouse_x,mouse_y)
[/gml]
PD:el personaje debe estar mirando hacia la derecha
si lo que quieres es que la imagen de tu "bala" gire entorno a el mouse y el personaje esta mirando al mouse prueba esto:
[gml]/*variable de ejemplo*/bala = instance_create(x,y,Obj_Bala)
                       bala.direction = image_angle
                       image_angle = image_angle
[/gml]
y si tienes un sprite por cada direccion puedes hacer esto:
[gml]
direction = point_position(x,y,mouse_x,mouse_y)

if (direction = 0){sprite_index = Spr_Prota_Rigth}
else if (direction = 90){sprite_index = Spr_Prota_Up}
else if (direction = 180){sprite_index = Spr_Prota_Left}
else if (direction = 270){sprite_index = Spr_Prota_Down}
[/gml]
cualquier cosa este corto video te puede ayudar y aclarar dudas:http://www.youtube.com/watch?v=CMZAlotXeOE
hazme saber si te funciono y si no es lo que querias planteame el problema mas detalladamente

Cita de: MantoxC en Diciembre 04, 2020, 05:12:39 AM
si lo que quieres es que tu prota "personaje" se mueva en torno a el mouse puedes poner en un evento steep de el mismo el siguiente codigo:
[gml]
image_angle = point_direction(x,y,mouse_x,mouse_y)
[/gml]
PD:el personaje debe estar mirando hacia la derecha
si lo que quieres es que la imagen de tu "bala" gire entorno a el mouse y el personaje esta mirando al mouse prueba esto:
[gml]/*variable de ejemplo*/bala = instance_create(x,y,Obj_Bala)
                       bala.direction = image_angle
                       image_angle = image_angle
[/gml]
y si tienes un sprite por cada direccion puedes hacer esto:
[gml]
direction = point_position(x,y,mouse_x,mouse_y)

if (direction = 0){sprite_index = Spr_Prota_Rigth}
else if (direction = 90){sprite_index = Spr_Prota_Up}
else if (direction = 180){sprite_index = Spr_Prota_Left}
else if (direction = 270){sprite_index = Spr_Prota_Down}
[/gml]
cualquier cosa este corto video te puede ayudar y aclarar dudas:http://www.youtube.com/watch?v=CMZAlotXeOE
hazme saber si te funciono y si no es lo que querias planteame el problema mas detalladamente

Ahora cambia el sprite segun el cursor pero solo cuando quiere, aveces muevo el cursor a un lado y pasa que, o se cambia el sprite, o no lo hace. Aqui tienes un video del problema https://youtu.be/tWbxi4S6cGU

Saludos, el tema es en este código:

Citar
[gml]
direction = point_direction(x,y,mouse_x,mouse_y)

if (direction = 0){sprite_index = Spr_Prota_Right}
else if (direction = 90){sprite_index = Spr_Prota_Up}
else if (direction = 180){sprite_index = Spr_Prota_Left}
else if (direction = 270){sprite_index = Spr_Prota_Down}
[/gml]

El concepto está bien, pero la falla está en que sólo va a chequear cuando direction sea 90... pero no el resto de valores que le siguen, 89, 88, 91, 92, ... por tanto unicamente va a cambiar el sprite cuando el cursor esté exactamente arriba del personaje. Y lo mismo con las otras tres direcciones.

Por lo que una forma de adaptarlo sería así:
[gml]
direction = point_direction(x,y,mouse_x,mouse_y);

if (direction <= 45 or direction > 315){sprite_index = Spr_Prota_Right;}
else if (direction > 45 and direction <= 135){sprite_index = Spr_Prota_Up;}
else if (direction > 135 and direction <= 225){sprite_index = Spr_Prota_Left;}
else if (direction > 225 and direction <= 315){sprite_index = Spr_Prota_Down;}
[/gml]
Supongo que debe haber otra forma mejor de calcular las direcciones, pero es la única que me sé de momento.

Para 8 direcciones puedes hacerlo de esta forma:
[gml]
direccion=round(point_direction(x,y,mouse_x,mouse_y)/45)
[/gml]
Te va a dar valores de 0 a 8, los cuales usas junto con un switch para cambiar de sprite.
Por ejemplo el valor 2 es mirando hacia arriba, el 6 esta mirando hacia abajo, el valor 3 en diagonal arriba-izquierda, etc.