Sara
Novato
Novato
Autor
Mensagens: 6
Registrado em: Sex Fev 05, 2021 10:07 pm
Karma: 15

Colisão

Sex Fev 05, 2021 10:28 pm

Sou "nova" no Game Maker e tenho uma dúvida.
Eu coloquei o código de colisão tudo certinho, mas a colisão só está pegando em baixo do chão, ou seja, estou entrando no chão e a colisão pega só embaixo do mesmo, alguém sabe o que pode ser?
 
Chuaschinai
Colaborador
Colaborador
Mensagens: 148
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 908

Re: Colisão

Sáb Fev 06, 2021 3:22 pm

Olá, poderia postar o código aqui para que possamos ver o que pode estar de errado?
Sem o código fica meio complicado.
 
Sara
Novato
Novato
Autor
Mensagens: 6
Registrado em: Sex Fev 05, 2021 10:07 pm
Karma: 15

Re: Colisão

Sáb Fev 06, 2021 5:57 pm

Chuaschinai escreveu:
Olá, poderia postar o código aqui para que possamos ver o que pode estar de errado?
Sem o código fica meio complicado.


Estou usando esse código:

//colisao horizontal

if (place_meeting(x +hspd, y, Obj_wall))
{
while(!place_meeting(x+ sign(hspd), y, Obj_wall))
{
x = x +sign(hspd);
}
hspd = 0;
}
x = x + hspd

//colisao horizontal

if (place_meeting(x, y+vspd, Obj_wall))
{
while(!place_meeting(x, y+ sign(vspd), Obj_wall))
{
y = y +sign(vspd);
}
vspd = 0;
}
y = y + vspd
 
Chuaschinai
Colaborador
Colaborador
Mensagens: 148
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 908

Re: Colisão

Sáb Fev 06, 2021 7:20 pm

Bom, este código esta correto é o código mais comum e objetivo para colisão em plataforma.

Creio que ainda tenha um pedaço a mais do código onde ele incrementa a velocidade vertical(gravidade), e a velocidade horizontal certo?.
Pois este código checa em todas a "direções" se esta colidindo com o Obj_wall, o código por si só esta correto, mas mande tudo que você tem o Create e no Step para ficar mais fácil.
 
Sara
Novato
Novato
Autor
Mensagens: 6
Registrado em: Sex Fev 05, 2021 10:07 pm
Karma: 15

Re: Colisão

Sáb Fev 06, 2021 7:49 pm

Chuaschinai escreveu:
Bom, este código esta correto é o código mais comum e objetivo para colisão em plataforma.

Creio que ainda tenha um pedaço a mais do código onde ele incrementa a velocidade vertical(gravidade), e a velocidade horizontal certo?.
Pois este código checa em todas a "direções" se esta colidindo com o Obj_wall, o código por si só esta correto, mas mande tudo que você tem o Create e no Step para ficar mais fácil.


Create:

vspd = 0;
hspd = 0;
grv = 0.2;
walkspd = 4;

Step:

key_right = keyboard_check(ord("D")) or keyboard_check(vk_right);
key_left = keyboard_check(ord("A")) or keyboard_check(vk_left);
key_jump = keyboard_check(vk_space);

var move = key_right - key_left;
vspd = vspd + grv;
hspd = move * walkspd;

if (place_meeting(x, y+1, Obj_wall)) && (key_jump)
{
vspd = -7

}

//colisao horizontal

if (place_meeting(x +hspd, y, Obj_wall))
{
while(!place_meeting(x+ sign(hspd), y, Obj_wall))
{
x = x +sign(hspd);
}
hspd = 0;
}
x = x + hspd

//colisao horizontal

if (place_meeting(x, y+vspd, Obj_wall))
{
while(!place_meeting(x, y+ sign(vspd), Obj_wall))
{
y = y +sign(vspd);
}
vspd = 0;
}
y = y + vspd

esses são todos os códigos que usei até agora, espero que consiga localizar o possível problema ^^'
1
 
Chuaschinai
Colaborador
Colaborador
Mensagens: 148
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 908

Re: Colisão

Sáb Fev 06, 2021 8:59 pm

O código esta correto sem nenhum problema, tendo isso em mente, o problema pode ser na mascara de colisão de algum dos objetos, Obj_wall ou o Player que esta portando este código.

Vá na sprite de ambos e tenha certeza que a mascara de colisão esta pegando o objeto por inteiro.
Não sei sua versão mas se for a GameMaker Studio 1.4999 vá na parte de Bounding Box e marque Full Image, se for no GameMaker Studio 2 vá na sprite em Collision Mask e Mode e marque Full Image, se o player tiver mais de um tipo de sprite faça em todas, e na sprite do Obj_wall também.
 
Sara
Novato
Novato
Autor
Mensagens: 6
Registrado em: Sex Fev 05, 2021 10:07 pm
Karma: 15

Re: Colisão

Sáb Fev 06, 2021 9:40 pm

Chuaschinai escreveu:
O código esta correto sem nenhum problema, tendo isso em mente, o problema pode ser na mascara de colisão de algum dos objetos, Obj_wall ou o Player que esta portando este código.

Vá na sprite de ambos e tenha certeza que a mascara de colisão esta pegando o objeto por inteiro.
Não sei sua versão mas se for a GameMaker Studio 1.4999 vá na parte de Bounding Box e marque Full Image, se for no GameMaker Studio 2 vá na sprite em Collision Mask e Mode e marque Full Image, se o player tiver mais de um tipo de sprite faça em todas, e na sprite do Obj_wall também.


Fiz o que disse e continua na mesma, o estranho é que na parede da esquerda a colisão está funcionando certinho, porém na direita e chão estão dando esse erro, o que realmente está me deixando com uma dúvida enorme
1
 
Chuaschinai
Colaborador
Colaborador
Mensagens: 148
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 908

Re: Colisão

Sáb Fev 06, 2021 10:44 pm

Mas o player chega a ficar preso?
Ele entra o quanto no Obj_wall?
1
 
Sara
Novato
Novato
Autor
Mensagens: 6
Registrado em: Sex Fev 05, 2021 10:07 pm
Karma: 15

Re: Colisão

Sáb Fev 06, 2021 11:11 pm

Ele entra no chão, mas não fica preso. É como se a colisão estivesse pegando só embaixo da plataforma do chão e não no bloco em si, vc consegue andar livremente em cima da colisão, porém ela não está onde deveria estar
 
Chuaschinai
Colaborador
Colaborador
Mensagens: 148
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 908

Re: Colisão

Sáb Fev 06, 2021 11:30 pm

Bom, se ele não fica preso não é um problema no código realmente, como eu disse poder ser questão da mascara do objeto, checa diretamente no objeto se não esta usando a mascara de um outro objeto diferente da sprite.

Se estiver entrando somente um pouquinho tipo 1 pixel do objeto pode ser a modificação na view.
Se você estiver usando algum script de camera, ou fez alguma modificação na view port para dar zoom ou algo do tipo, pode ser que não esteja a uma resolução adequada assim dando a impressão que esta dentro do objeto.
1
 
Sara
Novato
Novato
Autor
Mensagens: 6
Registrado em: Sex Fev 05, 2021 10:07 pm
Karma: 15

Re: Re: Colisão

Dom Fev 07, 2021 12:09 am

Ele entra muito, tipo se a plataforma é 64x64 ele entra esses 64 (ou seja, tudo) e a colisão só pega em baixo dela.
Vou tentar achar o que pode ser esse tal erro, espero que eu consiga localizá-lo e arruma-lo
1