Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

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

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Cambalinho
Membro
Membro
Reações: 0
Mensagens: 59

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

Mensagem por Cambalinho » Sáb Set 09, 2017 7:21 pm

eu ja tentei usar a point_distance(), mas não obtenho os resultados pretendidos :(
então como posso calcular a distancia entre 2 objectos?
Editado pela última vez por Cambalinho em Ter Set 12, 2017 4:49 pm, em um total de 1 vez.


Avatar do usuário
Cambalinho
Membro
Membro
Reações: 0
Mensagens: 59

Re: como posso calcular a distancia entre 2 objectos?

Mensagem por Cambalinho » Dom Set 10, 2017 11:51 am

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?

Avatar do usuário
Cambalinho
Membro
Membro
Reações: 0
Mensagens: 59

Re: como posso calcular a distancia entre 2 objectos?

Mensagem por Cambalinho » Seg Set 11, 2017 5:03 pm

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?

Avatar do usuário
Cambalinho
Membro
Membro
Reações: 0
Mensagens: 59

Re: como posso calcular a distancia entre 2 objectos?

Mensagem por Cambalinho » Ter Set 12, 2017 4:48 pm

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

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitante