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.

PLAYER TRAVA NO BLOCO QUANDO COLIDE COM O BLOCO/PLAYER ATRAVESSA BLOCO QUANDO PULA

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Z3USss
Novato
Novato
Reações: 0
Mensagens: 5

PLAYER TRAVA NO BLOCO QUANDO COLIDE COM O BLOCO/PLAYER ATRAVESSA BLOCO QUANDO PULA

Mensagem por Z3USss » Sáb Set 10, 2022 3:00 pm

Olá estou com um problema no meu jogo que quando o personagem termina de pular e colide com o chão ele entra dentro do bloco e trava, e quando aperto para pular novamente ele pula e desgruda do chão (isso acontece de vez em quando).
E outra coisa que acontece também e que quando to em cima de um bloco e aperto o botão de pulo ele atravessa o bloco (quando isso acontece ele trava no bloco e só sai se eu ficar apertando o pulo) aqui esta o codigo:

direita= keyboard_check(ord("D"));
esquerda= keyboard_check(ord("A"));

hveloc= (direita - esquerda) * veloc;

if (!place_meeting(x, y + 1,obj_wall))
{
vveloc= vveloc + grav;
}
else
{
vveloc= 0;
if (keyboard_check_pressed(vk_space))
{
vveloc= -5;
}

}
y += vveloc;

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


x += hveloc;


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

y += vveloc;

OBS: o personagem esta com a colissao no botton centre e o bloco no tap left

Avatar do usuário
KaykeBr
Membro
Membro
Reações: 2
Mensagens: 20
Localização: Rio de Janeiro

Re: PLAYER TRAVA NO BLOCO QUANDO COLIDE COM O BLOCO/PLAYER ATRAVESSA BLOCO QUANDO PULA

Mensagem por KaykeBr » Sex Set 23, 2022 8:46 pm

Olá, acho que consegui resolver o seu problema. Testa aí

Código: Selecionar todos

CREATE
hveloc = 0
vveloc = 0
grav = 0.4;
veloc = 4;

Código: Selecionar todos

STEP
//Teclas
direita= keyboard_check(ord("D"));
esquerda= keyboard_check(ord("A"));

//Move
hveloc = (direita - esquerda) * veloc;

//Colisao Horizontal
if place_meeting(x + hveloc, y,obj_wall){
while !place_meeting(x + sign(hveloc), y,obj_wall){
	x += sign(hveloc);
}
	hveloc= 0;
}
x += hveloc;

//Colisao Vertical
if place_meeting(x, y + vveloc,obj_wall){
while !place_meeting(x, y + sign(vveloc),obj_wall){
	y += sign(vveloc);
}
	vveloc= 0;
}
y += vveloc;

//Pulo
if place_meeting(x,y+1,obj_wall)
{
	vveloc= 0;
}else{
	vveloc= vveloc + grav;
}
if keyboard_check_pressed(vk_space)
{
	vveloc= -5;
}
	y += vveloc;


Eu fiz do jeito que eu me lembrava, me baseando no seu código, foi mal se eu troquei muitas linhas do seu codigo.
Testa aí e fala oq deu

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes