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

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

Código de pulo

Mensagem por Nat_2005 » Dom Jun 14, 2020 6:59 pm

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;

Avatar do usuário
All-x
Administrador
Administrador
Reações: 8
Mensagens: 621
Localização: Dourados-MS

Contato:

Re: Código de pulo

Mensagem por All-x » Dom Jun 14, 2020 8:01 pm

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
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!

Avatar do usuário
Nat_2005
Novato
Novato
Reações: 0
Mensagens: 19
Contato:

Re: Re: Código de pulo

Mensagem por Nat_2005 » Qui Jun 18, 2020 1:23 pm

Na colisão vertical, certo?

Avatar do usuário
All-x
Administrador
Administrador
Reações: 8
Mensagens: 621
Localização: Dourados-MS

Contato:

Re: Re: Código de pulo

Mensagem por All-x » Qui Jun 18, 2020 7:06 pm

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.
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!

Responder

Quem está online

Usuários navegando neste fórum: Bing [Bot] e 2 visitantes