Página 1 de 1

Código de pulo

Enviado: Dom Jun 14, 2020 6:59 pm
por Nat_2005
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;

Re: Código de pulo

Enviado: Dom Jun 14, 2020 8:01 pm
por All-x
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:

Código: Selecionar todos

if place_meeting(x, y + 1,obj_solid) and key_jump {
    vspd = -5;
}
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

Re: Re: Código de pulo

Enviado: Qui Jun 18, 2020 1:23 pm
por Nat_2005
Na colisão vertical, certo?

Re: Re: Código de pulo

Enviado: Qui Jun 18, 2020 7:06 pm
por All-x
Nat_2005 escreveu:Na colisão vertical, certo?
Hein? xD

Resumo: Modifique seu código de pulo como falei, tire ele lá do fim e coloque antes dos códigos de colisão.