Avatar do usuário
BardoÉbrio
Novato
Novato
Autor
Mensagens: 2
Registrado em: Qua Jun 05, 2019 11:30 am
Karma: 0

Movimento de colisão com as paredes

Qua Jun 05, 2019 12:39 pm

Olá, estou com uma dúvida. Criei um sistema de colisão bem básico, mas quando estou colidindo com uma parede ela inibe todos os meus movimentos, menos o da direção contrária. Por exemplo: se estou aqui...

Imagem

... não consigo me mover para cima ou para baixo, a menos que solte a tecla de mover para a esquerda. Gostaria que o personagem conseguisse se mover para cima enquanto seguro CIMA + ESQUERDA e etc.

O código que fiz é esse:
// movimentação

 // input

 key_left = -keyboard_check(vk_left);
 key_right = keyboard_check(vk_right);
 key_down = keyboard_check(vk_down);
 key_up = -keyboard_check(vk_up);
 key_run = keyboard_check(vk_lshift);
 key_dash = keyboard_check_pressed(vk_space);
 key_range = keyboard_check_pressed(vk_lcontrol);
 key_meele = keyboard_check_pressed(ord("Z"));

 moverl = key_left + key_right;
 moveud = key_down + key_up;

 hsp = moverl * movsp;
 vsp = moveud * movsp;

 // walk

 x = x + hsp;
 y = y + vsp;
 }


Grato desde já.

Tags:
 
Avatar do usuário
Alex FC
Administrador
Administrador
Mensagens: 510
Registrado em: Dom Abr 24, 2016 11:50 pm
Localização: Itaporã-MS
Karma: 886

Contato:

Re: Movimento de colisão com as paredes

Qua Jun 05, 2019 12:58 pm

É muita coisa pra explicar. Desde como funcionam as colisões e como funciona a física básica.

Provavelmente tu está usando algum código no evento de colisão com a parede. Os códigos que tu vai encontrar por ai são justamente para evitar que essa colisão aconteça. Então pra começar retire os códigos do evento de colisão que fazem ele parar.

No final ali tu pode substituir as duas últimas linhas por:

if not place_meeting(x + hsp, y, obj_parede) {x = x + hsp;}
if not place_meeting(x, y + vsp, obj_parede) {y = y + vsp;}


Não é o ideal. E provavelmente vai dar problemas dependendo dos valores que usar.

Tenho um tutorial simples sobre o assunto:

Movimentação Top Down

Enfim, qualquer dúvida estamos ai.
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
BardoÉbrio
Novato
Novato
Autor
Mensagens: 2
Registrado em: Qua Jun 05, 2019 11:30 am
Karma: 0

Re: Movimento de colisão com as paredes

Qua Jun 05, 2019 1:41 pm

Valeu cara, vou usar isso por enquanto =)

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes