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