Conectar-se
Quem está conectado
25 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 25 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 26/10/2012
Número de Mensagens : 31
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1
Ver perfil do usuário

[Resolvido]como fazer colisão 3D para todos objectos?

em Dom 23 Jul 2017, 09:00
eu fiz esta função de colisão 3D e funciona:
Código:
///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;
como não consigo meter o objecto atrás, eu aconselho meter o jogador\camara para a frente(sem alterar a sua posição) e se não colidir, então pode-se movimentar.
Código:
//if Collision3D(x+cos(direction*pi/180)*diference,y-sin(direction*pi/180)*diference,z+diference,w,h,p,objBox.x,objBox.y,50,60,60,60)
w,h,z,p são variaveis que criei no objecto. o p é para a expessura do controlo.

agora fiz outra função para todos objectos:
Código:
///Collision3DAllObjects(PosX1, PosY1, PosZ1, W1, H1, P1);

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

for (i=0;i<(instance_count-1);i++)
{
    PosX2=instance_id[i].x;
    PosY2=instance_id[i].y;
    PosZ2=instance_id[i].z;
    W2=instance_id[i].w;
    H2=instance_id[i].h;
    P2=instance_id[i].p;
    
    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;
mas eu noto 1 erro na linha 14:
Código:
PosZ2=instance_id[i].z;
sendo 'z' uma variavel que criei no objecto, como a posso a usar?


Última edição por Cambalinho em Seg 24 Jul 2017, 18:59, editado 1 vez(es)
avatar
Data de inscrição : 26/10/2012
Número de Mensagens : 31
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1
Ver perfil do usuário

Re: [Resolvido]como fazer colisão 3D para todos objectos?

em Seg 24 Jul 2017, 18:36
eu ja descubri o problema. afinal me tinha esquecido criar o 'z' num objecto.
muito obrigado por tudo
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum