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.

PERSONAGEM TRAVA QUANDO PULA Tópico resolvido

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

PERSONAGEM TRAVA QUANDO PULA

Mensagem por Z3USss » Qua Jul 20, 2022 9:02 pm

Ola estou um problema que quando eu pulo o meu personagem trava no meio do ar e nao sei o porque?alguem poderia me ajudar? aqui esta o codigo:

step:
direita= keyboard_check(ord("D"));
esquerda= keyboard_check(ord("A"));
cima= keyboard_check(ord("W"));

hveloc= (direita - esquerda) * veloc;

if !place_meeting(x, y + 1,obj_parede){
vveloc += gravidade;
}else{
if cima{
vveloc = -16
}


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

x += hveloc;

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

y += vveloc;

}

create:
cima= 0;

gravidade= 1;

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

Contato:

Re: PERSONAGEM TRAVA QUANDO PULA  Tópico resolvido

Mensagem por All-x » Sex Jul 22, 2022 11:06 am

Reordenei teu código:

Código: Selecionar todos

direita = keyboard_check(ord("D"));
esquerda = keyboard_check(ord("A"));
cima = keyboard_check_pressed(ord("W"));

hveloc = (direita - esquerda) * veloc;

if cima {
	vveloc = -16
}

if !place_meeting(x, y + 1, obj_parede) {
	vveloc += gravidade;
}

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

x += hveloc;

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

y += vveloc;
A lógica do código não fazia sentido, estava assim:

Código: Selecionar todos

SE NÃO COLIDIR COM O 'obj_parede' POR BAIXO
	APLICA GRAVIDADE
CASO COLIDIR COM O 'obj_parede' POR BAIXO
	PODE PULAR SE TECLAR 'CIMA'
	
	APLICA VELOCIDADE HORIZONTAL
	
	APLICA VELOCIDADE VERTICAL (QUE INCLUI A GRAVIDADE)

Ou seja só se movimentaria se estivesse colidindo com a parede por baixo. Então caso posicionasse ele "no ar" na room ficaria travado e se deixasse colado no chão ele poderia até ir pra direita ou esquerda, mas assim que pulasse ou caísse iria travar.
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: Nenhum usuário registrado e 5 visitantes