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
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
Re: PLAYER TRAVA NO BLOCO QUANDO COLIDE COM O BLOCO/PLAYER ATRAVESSA BLOCO QUANDO PULA
Olá, acho que consegui resolver o seu problema. Testa aí
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
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;
Testa aí e fala oq deu
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes