Conectar-se
Quem está conectado
25 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 25 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ir em baixo
Joaquim Jr
Ranking : Sem avaliações
Data de inscrição : 15/11/2018
Número de Mensagens : 3
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

GM:S2 - Player Travando Horizontalmente no Chão

em Seg 21 Jan 2019, 19:20
Olá, meus amigos! Estou enfrentando um problema muito grave num game de plataforma 2D que estou fazendo: quando o player aterrissa no chão, não consegue mais se movimentar para a direita e esquerda. O jogo, na verdade, nem tomou forma ainda. Estou enfrentando tal problema num arquivo do meu Game Maker Studio 2 Desktop que chamo de "Testes", o qual serve para que eu faça protótipos de games com suas programações. Vamos esclarecer, agora, algumas características desse game-teste:

1.0) Nome da Sprite e do Objeto do Player: "spr_player" e "obj_player", respectivamente.
1.1) Dimensões do Player: 64X64px.
1.2) Origem do Player: Top Left.
1.3) Máscara de Colisão do Player: Rectangle, em modo Automatic.
1.4) Está marcada a opção "solid" do respectivo objeto? Não.

2.0) Nome da Sprite e do Objeto dos Tiles do Chão: "spr_ghost_platform" e "obj_ghost_platform", respectivamente.
2.1) Dimensões dos Tiles do Chão: 64X64px.
2.2) Origem dos Tiles do Chão: Top Left.
2.3) Máscara de Colisão dos Tiles do Chão: Rectangle, em modo Automatic.
2.4) Está marcada a opção "solid" do respectivo objeto? Sim.
OBS: esses "Tiles do Chão" estão programados para serem plataformas fantasmas.

Agora, vamos a uma descrição mais detalhada do problema:

1) O player começa o game podendo perfeitamente se mover para a esquerda e direita.
2) Após pular, quando o player aterrissa no chão, não consegue mais se movimentar para a esquerda e direita.
3) Uma vez de volta ao chão, o player só conseguirá se movimentar para os lados se der outro pulo e enquanto estiver no ar.

Vamos, agora, visualizar todos os códigos utilizados em tal protótipo:

Código:
EVENTO "CREATE" DO OBJETO "PLAYER":
/// @description variáveis

velh=3; //velocidade horizontal

Código:
EVENTO "STEP" DO OBJETO "PLAYER":
/// @description movimentação

//movendo para esquerda
if keyboard_check(vk_left){
 x=x-velh;
}

//movendo para direita
if keyboard_check(vk_right){
 x=x+velh;
}

//pulando
if keyboard_check_pressed(vk_up){
 vspeed=-10;
 gravity=0.2;
}

Código:
EVENTO DE COLISÃO DO OBJETO "PLAYER" COM OS TILES DO CHÃO:
/// @description aterrissando

//fazendo a plataforma ser sólida
if(vspeed>=0){
 with(obj_ghost_platform){
 solid=true;
 }
 move_contact_solid(direction, 12);
 vspeed=0;
}

//fazendo a plataforma não ser sólida
if(vspeed<0){
 with(obj_ghost_platform){
 solid=false;
 }
}

É isso, meus amigos. Desde já, gostaria de agradecer muito a todos que puderem me ajudar. Qualquer coisa, se precisarem de mais detalhes, entrem em contato. Muito obrigado a todos!
None
Ranking : Sem avaliações
Data de inscrição : 01/06/2018
Número de Mensagens : 20
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: GM:S2 - Player Travando Horizontalmente no Chão

em Sex 25 Jan 2019, 01:01
O problema é que você está usando o evento de colisão.

Esse evento só funciona se HÁ colisão, porém é possível que com a velocidade do seu jogador ele entre no objeto que ele está colidindo, aí o problema acontece.

O ideal seria fazer isso no step.

Eu tenho uma playlist no YouTube explicando como fazer um infinity runner, nela eu explico como fazer a colisão.
lucaslima92
Ranking : Sem avaliações
Data de inscrição : 25/01/2019
Número de Mensagens : 3
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1
Ver perfil do usuário

Re: GM:S2 - Player Travando Horizontalmente no Chão

em Sex 25 Jan 2019, 10:25
Cara, só posso te dizer que "Jamais use SOLID para colisões de plataforma". Siga este tutorial e você vai ter um jogo agradável com uma ótima colisão.
Tutorial:
Conteúdo patrocinado

Re: GM:S2 - Player Travando Horizontalmente no Chão

Voltar ao Topo
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum