Hola estoy haciendo un beat 'em up y hasta ahora todo bien. El problema es que en uno de los estados de los enemigos, para que se acerquen al jugador y lo ataque uso move_towards_point y luego para chequear la distancia uso el código

distance_to_object(obj_blaze) <= 5

Pero sucede que cuando el enemigo se acerca la distancia aplica tanto al eje x como al eje y, y estoy utilizando mascaras de colisiones que son rectangulos en los pies de los personajes, entonces cuando el enemigo golpea lo hace en un eje y diferente al del jugador. Como puedo modificar la distancia para que el eje y sea parejo en ambos (jugador y enemigo)?


Esa función no toma en cuenta los ejes por separado sino como un vector.
Debes tomar el componente X del vector que tiene como magnitud el valor que retorna distance_to_object pero necesitas el angulo de inclinación que tiene, lo obtienes con point_direction.
[gml]
var dir = point_direction(x, y, obj_blaze.x, obj_blaze.y)
var dist = lengthdir_x(distance_to_object(obj_blaze), dir);
[/gml]
Cita de: Fenris78Si un tema os resulta de interes y veis que hay poca información, la mejor solucion no es quejarse o pedir sin pensar, sino sugerir algo bien planteado o aportarlo vosotros mismos.
Cita de: CalioSomos desarrolladores independientes y, por lo tanto, no tenemos por qué guiarnos por las tendencias del mercado.

Cita de: Johann en Diciembre 11, 2018, 02:27:48 AM
Esa función no toma en cuenta los ejes por separado sino como un vector.
Debes tomar el componente X del vector que tiene como magnitud el valor que retorna distance_to_object pero necesitas el angulo de inclinación que tiene, lo obtienes con point_direction.
[gml]
var dir = point_direction(x, y, obj_blaze.x, obj_blaze.y)
var dist = lengthdir_x(distance_to_object(obj_blaze), dir);
[/gml]

Gracias por responder. O sea que debería reemplazar el código que habia puesto con


var dir = point_direction(x, y, obj_blaze.x, obj_blaze.y)
var dist = lengthdir_x(distance_to_object(obj_blaze), dir);

if dist <= 5
{
       //Acción del enemigo
}