GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Conectar-se

Esqueci minha senha

Últimos assuntos
» FAROL / LIGHTHOUSE
por Deo Costa Seg 21 Jun 2021, 22:38

» [Steam] Sophstar
por theguitarmester Seg 21 Jun 2021, 21:58

» Salvar Room!
por Rafael Augusto Seg 21 Jun 2021, 02:30

» Personagem interagir com objeto/NPC ao pressionar ENTER
por Wallace_ank Sab 19 Jun 2021, 21:40

» Village Builder
por DJM_JM Sab 19 Jun 2021, 18:55

» Triangle Fly 2: Infinity
por NPH Sab 19 Jun 2021, 14:10

» Problema com mudança de sprites baseado na posição do mouse
por TRFN Sab 19 Jun 2021, 12:11

» Meus tutoriais sobre Game Maker
por pontoevirgula Sab 19 Jun 2021, 09:49

» Square Adventure
por Kleber Craft Qui 17 Jun 2021, 18:45

» Doações
por gilomania3d Qua 16 Jun 2021, 20:20

» Como Manter itens ao passar de fase no Game Maker 2
por Kleber Craft Qua 16 Jun 2021, 20:03

» Multiplayer Local
por theguitarmester Sab 12 Jun 2021, 12:26

» Magic Battle (Título pode mudar)
por theguitarmester Ter 08 Jun 2021, 17:43

» Fazer o Player andar na Parede
por NPH Qua 02 Jun 2021, 21:11

» Problema no contato
por theguitarmester Ter 01 Jun 2021, 10:06

» Venha conferir o Espaço GMBR no Discord!
por Joton Dom 30 Maio 2021, 15:27

» Inimigo vai pra trás quando encosta no Player
por Paulomm32 Qua 26 Maio 2021, 07:52

» Desenvolvimento: Quais linguagens vocês tem conhecimento?
por theguitarmester Ter 25 Maio 2021, 09:45

» Fixar background
por Rafael Augusto Dom 23 Maio 2021, 15:17

» Acervo GMBR
por Mr.Rafael Dom 23 Maio 2021, 12:09

» quando o personagem andar trocar de sprite
por Felipe_Cardoso Sab 22 Maio 2021, 23:36

» problema animação de personagem
por Felipe_Cardoso Sex 21 Maio 2021, 17:30

» iniciar audio/musica junto com a sala
por NPH Qua 12 Maio 2021, 17:09

» mudar de room(cena) quando fosse colidido
por NPH Ter 11 Maio 2021, 22:15

» criar obj aonde o mouse foi clicado
por Felipe_Cardoso Ter 11 Maio 2021, 11:36


Problema no contato

Ir em baixo

Problema no contato Empty Problema no contato

Mensagem por Rafael Augusto Sex 14 Maio 2021, 22:08

O código abaixo está funcionando porém se a velocidade vertical do personagem for muito alta quase sempre ele penetra o objeto. Também as vezes o personagem dá uma pequena "rebatida no chão". A personagem cai e levanta um pouquinho! Eu gostaria de uma maneira mais profissional de fazer isto! agradeço desde já!
No evento de colisão do personagem principal e a plataforma, para evitar a "penetração" de um objeto sobre o outro, eu coloquei:

vspeed = 0;

*obs: A plataforma está marcada como "solid".

Na etapa do personagem a gravidade está setada como:

//There is a platform beneath
if place_free(x, y)


{
gravity = 2;
}


else
{
gravity = 0;
}




Rafael Augusto
Rafael Augusto

Games Ranking : Sem avaliações

Data de inscrição : 14/05/2021
Reputação : 0
Número de Mensagens : 4
Prêmios : Problema no contato Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Problema no contato Empty Re: Problema no contato

Mensagem por NPH Sab 15 Maio 2021, 17:22

O erro do código está em apenas desligar a gravidade e não "parar o objeto" em si, não zerar a velocidade em Y, no caso:
Código:
if place_free(x,y+1){gravity=2;} //aplicara a gravidade se nao haver nada solido abaixo, por isso o +1 no y
else
{
 if vspeed >0 {vspeed=0;} //aqui verificara se a velocidade e maior do que zero para poder zerar, caso contrario nao daria pra sair do chao xD
 gravity=0; //zera gravidade
}
E quanto a objetos atravessarem outros, tem uma forma de fazer com que isso não aconteça no game maker, mas é usando um código mais complexo e um objeto parente, e que em algumas circunstâncias trava o jogo em um loop infinito se usado em plataformas móveis que fazem movimentos verticais :C
FLWS!


Última edição por NPH em Sab 15 Maio 2021, 17:23, editado 1 vez(es) (Motivo da edição : reli o post e vi uns detalhes no código da dúvida)
NPH
NPH

Games Ranking : Nota B

Notas recebidas : B
Data de inscrição : 28/11/2010
Reputação : 53
Número de Mensagens : 499
Prêmios : Problema no contato Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0


Ver perfil do usuário

William Lima gosta desta mensagem

Voltar ao Topo Ir em baixo

Problema no contato Empty Re: Problema no contato

Mensagem por Rafael Augusto Sab 29 Maio 2021, 16:58

Eu troquei o meu código de gravidade do personagem por este. E ainda ocasionalmente a personagem penetra a plataforma caso a velocidade seja alta seria necessário mais alguma modificação?
Rafael Augusto
Rafael Augusto

Games Ranking : Sem avaliações

Data de inscrição : 14/05/2021
Reputação : 0
Número de Mensagens : 4
Prêmios : Problema no contato Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Problema no contato Empty Re: Problema no contato

Mensagem por theguitarmester Ter 01 Jun 2021, 10:06

Pra não entrar mesmo com a velocidade seja alta, tem algumas coisas a mais que tu pode fazer pra evitar isso, em geral usar o while pra sair de dentro do outro bloco e ficar no chão certinho.
Caso não conheça o que o while faz, é bem simples: while(tradução: enquanto), ou seja, enquanto a condição dentro dele é verdadeira, o código dentro do { } vai ser executado.

Código:
if (place_free(x,y+1+vspeed)) {
  gravity=2;
}
else
{
  while(place_free(x,y+1)) {
//enquanto a posição x,y+1 não estiver livre, executar o código abaixo
y+=1;
//Esse código vai fazer que ele suavemente 'grude' no terreno, independente da velocidade que ele tivesse no momendo da colisão
}
  if vspeed >0 {vspeed=0;}
  gravity=0;
}

theguitarmester
theguitarmester

Games Ranking : Nota B

Notas recebidas : B
Data de inscrição : 28/02/2012
Reputação : 119
Número de Mensagens : 2075
Prêmios : Problema no contato Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


Ver perfil do usuário http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

Problema no contato Empty Re: Problema no contato

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo


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