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. |
Bug em colisão vertical Tópico resolvido
Bug em colisão vertical Tópico resolvido
Ta acontecendo um bug estranho na colisão do pulo, não importa a forma que eu bata a cabeça em algum obj, o personagem sempre é teleportado pra cima, ja selecionei como padrão a mascara de colisão do sprite principal no objeto do personagem, segue o meu código de colisão:
ps: o bug só acontece na colisão vertical, quando o personagem vai bater a cabeça em algo, a colisão horizontal funciona perfeitamente
var _col = instance_place(x+hvel,y,obj_chao);//instance_place checa se houve uma colisão entre os parametros
if _col { // se houver colisão
//caso estiver indo pra direita
if hvel>0{
//grudando na parte esquerda da parrede
x = _col.bbox_left +(x-bbox_right); // COMANDO PARA OTIMIZAR A AREA DE COLISAO
}
//caso estiver indo pra esquerda
if hvel<0{
//grudando da direita da parede
x = _col.bbox_right +(x-bbox_left); //COMANDO PARA OTIMIZAR A AREA DE COLISAO
}
hvel = 0;
}
//COLISAO VERTICAL
var _col = instance_place(x,y+vvel,obj_chao);
if _col{
// indo pra baixo
if y>0{ // grudando no topo da chao
y = _col.bbox_top + (y-bbox_bottom); //COMANDO PARA OTIMIZAR A AREA DE COLISAO
}
//cima
if y<0{ // grudando no teto
y = _col.bbox_bottom + (y - bbox_top);
}
vvel=0;
}
#endregion
ps: o bug só acontece na colisão vertical, quando o personagem vai bater a cabeça em algo, a colisão horizontal funciona perfeitamente
var _col = instance_place(x+hvel,y,obj_chao);//instance_place checa se houve uma colisão entre os parametros
if _col { // se houver colisão
//caso estiver indo pra direita
if hvel>0{
//grudando na parte esquerda da parrede
x = _col.bbox_left +(x-bbox_right); // COMANDO PARA OTIMIZAR A AREA DE COLISAO
}
//caso estiver indo pra esquerda
if hvel<0{
//grudando da direita da parede
x = _col.bbox_right +(x-bbox_left); //COMANDO PARA OTIMIZAR A AREA DE COLISAO
}
hvel = 0;
}
//COLISAO VERTICAL
var _col = instance_place(x,y+vvel,obj_chao);
if _col{
// indo pra baixo
if y>0{ // grudando no topo da chao
y = _col.bbox_top + (y-bbox_bottom); //COMANDO PARA OTIMIZAR A AREA DE COLISAO
}
//cima
if y<0{ // grudando no teto
y = _col.bbox_bottom + (y - bbox_top);
}
vvel=0;
}
#endregion
- ValdeciVieira
- Moderador
- Reações: 8
- Mensagens: 122
- Localização: Rio de Janeiro, Brasil
Re: Bug em colisão vertical
Em vez de:
devia estar verificando por:
Código: Selecionar todos
y>0 e y<0
Código: Selecionar todos
vvel>0 e vvel<0
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes