Resumo: Modifique seu código de pulo como falei, tire ele lá do fim e coloque antes dos códigos de colisão.
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. |
Código de pulo
Código de pulo
Meu personagem não está pulando. Quero que ele pule toda vez que eu pressionar a tecla W.
Bem, eu coloquei que y+ é vspd, e quando ela é pressionada o personagem deve ir y= -5, mas não está dando certo.
Se souberem o que está acontecendo, me expliquem com a correção do código.
Step
#region CONTROLES
key_right = keyboard_check(ord("D")) //Direita
key_left = keyboard_check(ord("A")) //Esquerda
key_jump = keyboard_check_pressed(ord("W")) //Pular
#endregion
#region MOVIMENTAÇÃO_VIRAR O PERSONAGEM
var move = key_right - key_left
hspd = move * spd
vspd = spd + grv
if (hspd != 0) image_xscale = sign(hspd) * 2.5 //Virar o personagem
#endregion
#region COLISÃO
//Colisão_horizontal
if place_meeting(x+hspd,y,obj_solid){
{
while(place_meeting(x+sign(hspd),y,obj_solid)
)
x = x + sign(hspd);
}
hspd = 0;
}
x = x + hspd;
//Colisão_vertical
if place_meeting(x,y+vspd,obj_solid)
{
while(!place_meeting(x,y+sign(vspd),obj_solid))
{
y = y + sign(vspd);
}
vspd = 0;
}
y = y + vspd;
#endregion
#region PULO
if place_meeting(x,y,obj_solid) and key_jump{
vspd-=5;
}
#endregion
Creat
spd = 5;
hspd =0;
vspd =0;
grv = 4;
gravity_direction = 270;
y += vspd;
x += hspd;
Bem, eu coloquei que y+ é vspd, e quando ela é pressionada o personagem deve ir y= -5, mas não está dando certo.
Se souberem o que está acontecendo, me expliquem com a correção do código.
Step
#region CONTROLES
key_right = keyboard_check(ord("D")) //Direita
key_left = keyboard_check(ord("A")) //Esquerda
key_jump = keyboard_check_pressed(ord("W")) //Pular
#endregion
#region MOVIMENTAÇÃO_VIRAR O PERSONAGEM
var move = key_right - key_left
hspd = move * spd
vspd = spd + grv
if (hspd != 0) image_xscale = sign(hspd) * 2.5 //Virar o personagem
#endregion
#region COLISÃO
//Colisão_horizontal
if place_meeting(x+hspd,y,obj_solid){
{
while(place_meeting(x+sign(hspd),y,obj_solid)
)
x = x + sign(hspd);
}
hspd = 0;
}
x = x + hspd;
//Colisão_vertical
if place_meeting(x,y+vspd,obj_solid)
{
while(!place_meeting(x,y+sign(vspd),obj_solid))
{
y = y + sign(vspd);
}
vspd = 0;
}
y = y + vspd;
#endregion
#region PULO
if place_meeting(x,y,obj_solid) and key_jump{
vspd-=5;
}
#endregion
Creat
spd = 5;
hspd =0;
vspd =0;
grv = 4;
gravity_direction = 270;
y += vspd;
x += hspd;
Re: Código de pulo
No seu código do pulo você está checando se há colisão com o obj_solid. E pelo seu código isso nunca vai acontecer, pois pra haver colisão um objeto tem que 'entrar' no outro e não apenas ficar em cima ou do lado.
Logo tu tem que chegar se abaixo da posição do player há colisão, basta colocar y + 1 no place_meeting:
Mova esse código pra parte acima da region COLISÃO pra evitar futuros problemas, ou seja logo depois da region MOVIMENTAÇÃO.
Abraços
Logo tu tem que chegar se abaixo da posição do player há colisão, basta colocar y + 1 no place_meeting:
Código: Selecionar todos
if place_meeting(x, y + 1,obj_solid) and key_jump {
vspd = -5;
}
Abraços
Re: Re: Código de pulo
Hein? xDNat_2005 escreveu:Na colisão vertical, certo?
Resumo: Modifique seu código de pulo como falei, tire ele lá do fim e coloque antes dos códigos de colisão.
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes