Página 1 de 1

[RESOLVIDO]como posso calcular a distancia entre 2 objectos?

Enviado: Sáb Set 09, 2017 7:21 pm
por Cambalinho
eu ja tentei usar a point_distance(), mas não obtenho os resultados pretendidos :(
então como posso calcular a distancia entre 2 objectos?

Re: como posso calcular a distancia entre 2 objectos?

Enviado: Dom Set 10, 2017 10:06 am
por lucaslima

Re: como posso calcular a distancia entre 2 objectos?

Enviado: Dom Set 10, 2017 11:51 am
por Cambalinho
desculpa mas essa função não me ajuda :(
até a hipotenusa já calculei, mas obtenho valores grandes do que preciso e não são precisos :(
imagina que desenhas 1 linha entre 2 pontos, mas só precisas do comprimento da linha. como posso fazer isso?

Re: como posso calcular a distancia entre 2 objectos?

Enviado: Seg Set 11, 2017 5:03 pm
por Cambalinho
eu ja´entendi porque não me funciona.
eu não utilizo inimigos ou objectos muito pequenos, mas sim paredes grandes, por isso o ponto não serve se estou no meio da parede.
alguem me pode dar mais dicas, para resolver o problema?

Re: como posso calcular a distancia entre 2 objectos?

Enviado: Ter Set 12, 2017 4:48 pm
por Cambalinho
finalmente consegui:

Código: Selecionar todos

//Collision 3D script(como é normal, pode ser alterado para receber só as instancias, mas fica ao vosso critério):
///Collision3D(PosX1, PosY1, PosZ1, W1, H1, P1, PosX2, PosY2, PosZ2, W2, H2, P2);

PosX1=argument0;
PosY1=argument1;
PosZ1=argument2;
W1=argument3;
H1=argument4;
P1=argument5;

PosX2=argument6;
PosY2=argument7;
PosZ2=argument8;
W2=argument9;
H2=argument10;
P2=argument11;

if ((PosX1 < (PosX2 + W2)) && (PosX2 < (PosX1 + W1)))
{
    if ((PosY1 < (PosY2 + H2)) && (PosY2 < (PosY1 + H1)))
    {
        if ( (PosZ1<(PosZ2+P2)) && (PosZ2<(PosZ1+P1)))
        {            
            return true;
        }
    }    
}
return false;

//modo de usar:

inst = instance_nearest(x+cos(degtorad(direction)), y-sin(degtorad(direction)), objWall);//não é 100% fiavel :(

var dis = 0;
for(r=0;r<500;r++)
{
    check_x = lengthdir_x(r,direction);
    check_y = lengthdir_y(r,direction);
    if(Collision3D(x+check_x,y+check_y,z,w,h,p,inst.x,inst.y,inst.z,inst.w,inst.h,inst.p)==true)
    {
        dis=r;
        break;   
    }
}

distancewall=dis;
muito obrigado a todos pela ajuda