El problema es el siguiente, estoy haciendo que mi "pj" al tocar la tecla "R" cerca de un "objeto_base" crea una "torre_de_muralla" luego al acercarce a otro "objeto_base" que calcule la distancia entre estos dos puntos (que lo hago con "distance_to_point()") y lo divida por el acho del sprite de la muralla para saber cuantos sprites tiene que dibujar, el problema es que no se como calcular cada cordenada de cada sprite. dejo el link de una imagen https://www.mediafire.com/view/gx8d4vgg6t4xpuc/ejemplo.jpg/file
Puedes utilizar trigonometría para conseguir las coordenadas horizontal y vertical (ver imagen adjunta).
Considerando que los extremos de la línea son llamados objA y objB, y el muro es llamado objMuro, además de que el origen del sprite del muro (sprMuro) está centrado (como en la imagen), entonces:
[gml]
///EN EL EVENTO EN EL QUE NECESITES
//Distancia y dirección
var distance = point_distance( objA.x, objA.y, objB.x, objB.y ); //calcular la distancia entre los objetos
var angle = point_direction( objA.x, objA.y, objB.x, objB.y ); //calcular el ángulo entre los objetos
//Muro
var muro_len = sprite_get_width(sprMuro); //tamaño horizontal del muro.
var amount = floor(distance / muro_len); //¿cuántos muros caben en la línea? Si sobra algo de espacio no se tendrá en cuenta.
var len, xx, yy;
for(var i = 1; i <= amount; i++) {
len = muro_len * i; //distancia del objA al muro actual.
xx = lengthdir_x(len, angle);
yy = lengthdir_y(len, angle);
with instance_create(objA.x + xx, objA.y + yy, objMuro) {
image_angle = angle;
}
}
[/gml]
Si falla algo avísame, no he probado el código aún.
gracias, no conocia "lengthdir_x" con eso ya lo pude hacer