Hola a todos, tengo una duda que espero explicarme bien y que me entiendan para poder solucionarla.
Mi personaje principal mira siempre hacia donde esta el mouse(girando el sprite con image_angle=point_direction(self.x,self.y,mouse_x,mouse_y)).
La idea es hacer que el personaje tenga un lanzallamas, por una parte el sprite del personaje tiene el arma y por otra he creado el objeto llama(con forma de cono frontal y el centro del sprite es el principio del cono).
La idea esta en que cuando activo el lanzallamas quiero que saque el objeto no en el centro del sprite del personaje sino en la punta del cañon(desde el centro del sprite hay 32 pixels de distancia) por lo tanto por trigonometria deduci esto:
angle = angulo(point_direction(self.x,self.y,mouse_x,mouse_y))
if(angle < 90 and angle != 0){
instance_create(floor(abs(cos(angle)*32)) + self.x, self.y - floor(abs(sin(angle)*32)),obj_llamas)}
else if(angle < 180){
instance_create(self.x - floor(abs(sin(angle)*32)),self.y - floor(abs(cos(angle)*32)),obj_llamas)}
else if(angle < 270){
instance_create(self.x - floor(abs(cos(angle)*32)),(self.y + floor(abs(sin(angle)*32))),obj_llamas)}
else if(angle < 360 or angle = 0){
instance_create(self.x + floor(abs(sin(angle)*32)),self.y + floor(abs(cos(angle)*32)),obj_llamas)}
donde angle es el siguiente script
argument0= argument0 mod 360;
if argument0>=0 return ( argument0 );
return( 360+argument0 );

La idea es que, teniendo el eje x y el eje y, a siendo el angulo que nos da la funcion point_direction, queda claro que Cateto Opuesto = Sin(a)*r, y Cateto Adyacente = Cos(a)*r. En los quadrantes 1 y 3, el sin(a) corresponde al eje y, y en los 2 y 4 corresponde al eje x.
Cual podria ser el problema? Espero que me sean de gran ayuda =)
Mi personaje principal mira siempre hacia donde esta el mouse(girando el sprite con image_angle=point_direction(self.x,self.y,mouse_x,mouse_y)).
La idea es hacer que el personaje tenga un lanzallamas, por una parte el sprite del personaje tiene el arma y por otra he creado el objeto llama(con forma de cono frontal y el centro del sprite es el principio del cono).
La idea esta en que cuando activo el lanzallamas quiero que saque el objeto no en el centro del sprite del personaje sino en la punta del cañon(desde el centro del sprite hay 32 pixels de distancia) por lo tanto por trigonometria deduci esto:
angle = angulo(point_direction(self.x,self.y,mouse_x,mouse_y))
if(angle < 90 and angle != 0){
instance_create(floor(abs(cos(angle)*32)) + self.x, self.y - floor(abs(sin(angle)*32)),obj_llamas)}
else if(angle < 180){
instance_create(self.x - floor(abs(sin(angle)*32)),self.y - floor(abs(cos(angle)*32)),obj_llamas)}
else if(angle < 270){
instance_create(self.x - floor(abs(cos(angle)*32)),(self.y + floor(abs(sin(angle)*32))),obj_llamas)}
else if(angle < 360 or angle = 0){
instance_create(self.x + floor(abs(sin(angle)*32)),self.y + floor(abs(cos(angle)*32)),obj_llamas)}
donde angle es el siguiente script
argument0= argument0 mod 360;
if argument0>=0 return ( argument0 );
return( 360+argument0 );

La idea es que, teniendo el eje x y el eje y, a siendo el angulo que nos da la funcion point_direction, queda claro que Cateto Opuesto = Sin(a)*r, y Cateto Adyacente = Cos(a)*r. En los quadrantes 1 y 3, el sin(a) corresponde al eje y, y en los 2 y 4 corresponde al eje x.
Cual podria ser el problema? Espero que me sean de gran ayuda =)