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

Esqueci-me da senha

Últimos assuntos
» Servidor de Discord do fórum?
por Super Games Ontem à(s) 01:27

» Problemas com a caixa de diálogo, ela é pequena e as letras não cabem dentro
por Rukasu777 Qui 16 maio 2024, 18:10

» Problemas com particulas
por RastaMaan Dom 12 maio 2024, 17:03

» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08

» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43

» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42


[Resolvido]Problema Colisão

4 participantes

Ir para baixo

 - [Resolvido]Problema Colisão Empty [Resolvido]Problema Colisão

Mensagem por Matheus_Riot Seg 04 Jan 2021, 20:15

Eu usei esse código pra colisão:

if place_meeting(x+hsp,y,nome objeto)
{
while(!place_meeting(x+sign(hsp),y,nome objeto))
{
x = x + sign(hsp);
}
hsp=0;
}
x = x + hsp;

if place_meeting(x,y+vsp,nome objeto)
{
while(!place_meeting(x+sign(hsp),y+sign(vsp),nome objeto))
{
y = y + sign(vsp);
}
vsp=0;
}
y = y + vsp;

mas quando o personagem encosta do objeto ele começa a atravesar o chão lentamente

 - [Resolvido]Problema Colisão Captur11

e eu ja reescrevi o código umas 5 vezes.


Última edição por Matheus_Riot em Qui 07 Jan 2021, 11:34, editado 1 vez(es)
Matheus_Riot
Matheus_Riot

Games Ranking : Sem avaliações

Data de inscrição : 04/01/2021
Reputação : 0
Número de Mensagens : 6
Prêmios :  - [Resolvido]Problema Colisão 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

Ir para o topo Ir para baixo

 - [Resolvido]Problema Colisão Empty Re: [Resolvido]Problema Colisão

Mensagem por theguitarmester Seg 04 Jan 2021, 20:40

Primeiramente, bem vindo ao fórum! cheers

Segundo, pode mostrar o código que tu está utilizando para atualizar a força da gravidade (atualizar o valor do vsp)?
theguitarmester
theguitarmester

Games Ranking : Nota C

Notas recebidas : B + C
Data de inscrição : 28/02/2012
Reputação : 139
Número de Mensagens : 2211
Prêmios :  - [Resolvido]Problema Colisão 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


http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Ir para o topo Ir para baixo

 - [Resolvido]Problema Colisão Empty Re: [Resolvido]Problema Colisão

Mensagem por Matheus_Riot Seg 04 Jan 2021, 21:05

theguitarmester escreveu:Primeiramente, bem vindo ao fórum! cheers

Segundo, pode mostrar o código que tu está utilizando para atualizar a força da gravidade (atualizar o valor do vsp)?


Obrigado Happy

vsp = vsp + grv;

acho q é esse, é q eu comecei a mexer com programação a pouco tempo então eu não sei quase nada.
Matheus_Riot
Matheus_Riot

Games Ranking : Sem avaliações

Data de inscrição : 04/01/2021
Reputação : 0
Número de Mensagens : 6
Prêmios :  - [Resolvido]Problema Colisão 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

Ir para o topo Ir para baixo

 - [Resolvido]Problema Colisão Empty Re: [Resolvido]Problema Colisão

Mensagem por theguitarmester Seg 04 Jan 2021, 23:51

Isso deve estar acontecendo sempre:
vsp = vsp + grv;


E isso também:
y = y + vsp;

Acaba que daí tu está sempre passando deslocando um pouco pra baixo.

Uma forma não perfeita mais rápida de não acontecer isso, é checar se está colidindo com alguma coisa na posição atual (com um leve deslocamento de 1px pra baixo), e caso não estiver colidindo (o uso do '!' é para negar), então aplicar a gravidade:
Código:
if !place_meeting(x,y+1,nome objeto) {
vsp = vsp + grv;
}
theguitarmester
theguitarmester

Games Ranking : Nota C

Notas recebidas : B + C
Data de inscrição : 28/02/2012
Reputação : 139
Número de Mensagens : 2211
Prêmios :  - [Resolvido]Problema Colisão 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


http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Ir para o topo Ir para baixo

 - [Resolvido]Problema Colisão Empty Re: [Resolvido]Problema Colisão

Mensagem por Matheus_Riot Ter 05 Jan 2021, 00:02

theguitarmester escreveu:Isso deve estar acontecendo sempre:
vsp = vsp + grv;


E isso também:
y = y + vsp;

Acaba que daí tu está sempre passando deslocando um pouco pra baixo.

Uma forma não perfeita mais rápida de não acontecer isso, é checar se está colidindo com alguma coisa na posição atual (com um leve deslocamento de 1px pra baixo), e caso não estiver colidindo (o uso do '!' é para negar), então aplicar a gravidade:
Código:
if !place_meeting(x,y+1,nome objeto) {
vsp = vsp + grv;
}

e eu troco qual código por esse?
Matheus_Riot
Matheus_Riot

Games Ranking : Sem avaliações

Data de inscrição : 04/01/2021
Reputação : 0
Número de Mensagens : 6
Prêmios :  - [Resolvido]Problema Colisão 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

Ir para o topo Ir para baixo

 - [Resolvido]Problema Colisão Empty Re: [Resolvido]Problema Colisão

Mensagem por Diemorth Ter 05 Jan 2021, 10:18

Na segunda parte do seu código é bom remover também a parte destacada em negrito:

if place_meeting(x,y+vsp,nome objeto){
   while(!place_meeting(x+sign(hsp),y+sign(vsp),nome objeto)){
       y = y + sign(vsp);
   }
   vsp = 0;
}
y = y + vsp;

Essa parte destacada faz ele checar uma outra posição e pode afetar o resultado da movimentação vertical.

É bom termos noção de todo o código que você está usando nessa parte pois pode ser um problema na atribuição de alguma outra checagem.

Outra coisa, o nome do objeto que você está usando como chão está exatamente como "nome objeto"?
Diemorth
Diemorth

Games Ranking : Sem avaliações

Data de inscrição : 26/01/2020
Reputação : 61
Número de Mensagens : 208
Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 2

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Unity
  • Java
  • Web Tecnology
  • Unreal
  • Javascript
  • RPG Maker
  • C ou C++
  • Outros


https://diemorth.github.io/diemorth

Ir para o topo Ir para baixo

 - [Resolvido]Problema Colisão Empty Re: [Resolvido]Problema Colisão

Mensagem por Matheus_Riot Ter 05 Jan 2021, 13:01

Diemorth escreveu:Na segunda parte do seu código é bom remover também a parte destacada em negrito:

if place_meeting(x,y+vsp,nome objeto){
   while(!place_meeting(x+sign(hsp),y+sign(vsp),nome objeto)){
       y = y + sign(vsp);
   }
   vsp = 0;
}
y = y + vsp;

Essa parte destacada faz ele checar uma outra posição e pode afetar o resultado da movimentação vertical.

É bom termos noção de todo o código que você está usando nessa parte pois pode ser um problema na atribuição de alguma outra checagem.

Outra coisa, o nome do objeto que você está usando como chão está exatamente como "nome objeto"?

eu tirei aquele  + sign do x e continuou caindo, e eu ainda não entendi onde eu coloco isso:

if !place_meeting(x,y+1,nome objeto) {
vsp = vsp + grv;
}

eu troco o segundo código por esse ou eu só coloco ele debaixo? nervoso
Matheus_Riot
Matheus_Riot

Games Ranking : Sem avaliações

Data de inscrição : 04/01/2021
Reputação : 0
Número de Mensagens : 6
Prêmios :  - [Resolvido]Problema Colisão 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

Ir para o topo Ir para baixo

 - [Resolvido]Problema Colisão Empty Re: [Resolvido]Problema Colisão

Mensagem por NPH Ter 05 Jan 2021, 14:12

Olá matheus_riot! Bem vindo ao fórum GMBR!
Pelo que ví nessa discussão, vc usa o mesmo sistema para colisão que eu uso (ao menos quando faço alguma coisa que funcione xD)
Primeiramente, você faz os cálculos das velocidades, depois aplica em uma colisão. Veja um exemplo de step Event:
Código:

//aqui supostamente calculada as velocidades
xsp=4*inh; //x
ysp+=grv-(jum*inv); //y com a gravidade e o pulo (apenas exemplo)
//aqui e calculada as colisoes
//horizontal
if place_meeting(x+xsp,y,obj_solidparent) //verifica se esta se econtrando com outro obj
{
     while !place_meeting(x+sign(xsp),y,obj_solidparent) //depois verif. se ainda tem espaco mesmo com a colisao
     {
          x+=sign(xsp); //move de 1 em 1 px.
     }
     xsp=0; //ai sim zera a velocidade
}
x+=xsp; //depois move em x
//Na vertical so muda que e o Y e nao o X
Dá uma verificada em seu código de movimentação, pode ser que algo não esteja claro e verifique se está fazendo primeiro os calculos das velocidades depois a de colisão.
Lembrando que isso é só um exemplo, depende mesmo de como você está fazendo o calculo de xsp e ysp!
NPH
NPH

Games Ranking : Nota B

Notas recebidas : B
Data de inscrição : 28/11/2010
Reputação : 58
Número de Mensagens : 504
Prêmios :  - [Resolvido]Problema Colisão 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


Ir para o topo Ir para baixo

 - [Resolvido]Problema Colisão Empty Re: [Resolvido]Problema Colisão

Mensagem por Matheus_Riot Ter 05 Jan 2021, 15:53

NPH escreveu:Olá matheus_riot! Bem vindo ao fórum GMBR!
Pelo que ví nessa discussão, vc usa o mesmo sistema para colisão que eu uso (ao menos quando faço alguma coisa que funcione xD)
Primeiramente, você faz os cálculos das velocidades, depois aplica em uma colisão. Veja um exemplo de step Event:
Código:

//aqui supostamente calculada as velocidades
xsp=4*inh; //x
ysp+=grv-(jum*inv); //y com a gravidade e o pulo (apenas exemplo)
//aqui e calculada as colisoes
//horizontal
if place_meeting(x+xsp,y,obj_solidparent) //verifica se esta se econtrando com outro obj
{
     while !place_meeting(x+sign(xsp),y,obj_solidparent) //depois verif. se ainda tem espaco mesmo com a colisao
     {
          x+=sign(xsp); //move de 1 em 1 px.
     }
     xsp=0; //ai sim zera a velocidade
}
x+=xsp; //depois move em x
//Na vertical so muda que e o Y e nao o X
Dá uma verificada em seu código de movimentação, pode ser que algo não esteja claro e verifique se está fazendo primeiro os calculos das velocidades depois a de colisão.
Lembrando que isso é só um exemplo, depende mesmo de como você está fazendo o calculo de xsp e ysp!

olha eu não entendi muito do vc falou, mas esse é todo o código q eu tenho:

Create:
hsp = 0;
vsp = 0;
grv = 0.3;
walksp = 4;
jumpsp = 9;

step:
//player inputs

key_left = keyboard_check(ord("A"));
key_right = keyboard_check(ord("D"));
key_jump = keyboard_check_pressed(vk_space);

//calcular movimentos

var _move = key_right - key_left;

hsp = _move * walksp; // comandos movimento

vsp = vsp + grv;

x = x + hsp;
y = y + vsp; // comando gravidade

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

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

if !place_meeting(x,y+1,obj_invisivel) {
vsp = vsp + grv;
}

PS: Ainda não programei o pulo!
Matheus_Riot
Matheus_Riot

Games Ranking : Sem avaliações

Data de inscrição : 04/01/2021
Reputação : 0
Número de Mensagens : 6
Prêmios :  - [Resolvido]Problema Colisão 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

Ir para o topo Ir para baixo

 - [Resolvido]Problema Colisão Empty Re: [Resolvido]Problema Colisão

Mensagem por NPH Ter 05 Jan 2021, 16:10

Olá, já encontrei o seu erro!
Código:

//apague isso aqui--------------------------
x = x + hsp;
y = y + vsp; // comando gravidade
//-------------------------------------------------------
//aqui e a colisao horizontal
if place_meeting(x+hsp,y,obj_invisivel) //aqui e quando colide
{
while(!place_meeting(x+sign(hsp),y,obj_invisivel)) //aqui verifica na colisao se ainda tem espaco
{
x = x + sign(hsp); //move de pixel em pixel
}
hsp=0; //zera velocidade
}
x = x + hsp; //move em x
//aqui a vertical
if place_meeting(x,y+vsp,obj_invisivel) //quando colide
{
while(!place_meeting(x,y+sign(vsp),obj_invisivel)) //quando ha espaco na colisao ainda
{
y = y + sign(vsp); //move de pixel em pixel
}
vsp=0; //zera velocidade
}
y = y + vsp; //move em y
//essa parte esta depois da colisao, tem que ser antes
//------------------------------------------------------------
if !place_meeting(x,y+1,obj_invisivel) {
vsp = vsp + grv;
}
//-----------------------------------------------------------
Pegue a parte da gravidade, coloque-a antes da colisão, apague a primeira parte que lhe indiquei e testa, creio que são essas duas partes do código que tá dando errado flw
NPH
NPH

Games Ranking : Nota B

Notas recebidas : B
Data de inscrição : 28/11/2010
Reputação : 58
Número de Mensagens : 504
Prêmios :  - [Resolvido]Problema Colisão 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


Ir para o topo Ir para baixo

 - [Resolvido]Problema Colisão Empty Re: [Resolvido]Problema Colisão

Mensagem por Matheus_Riot Ter 05 Jan 2021, 20:52

NPH escreveu:Olá, já encontrei o seu erro!
Código:

//apague isso aqui--------------------------
x = x + hsp;
y = y + vsp; // comando gravidade
//-------------------------------------------------------
//aqui e a colisao horizontal
if place_meeting(x+hsp,y,obj_invisivel) //aqui e quando colide
{
while(!place_meeting(x+sign(hsp),y,obj_invisivel)) //aqui verifica na colisao se ainda tem espaco
{
x = x + sign(hsp); //move de pixel em pixel
}
hsp=0; //zera velocidade
}
x = x + hsp; //move em x
//aqui a vertical
if place_meeting(x,y+vsp,obj_invisivel) //quando colide
{
while(!place_meeting(x,y+sign(vsp),obj_invisivel)) //quando ha espaco na colisao ainda
{
y = y + sign(vsp); //move de pixel em pixel
}
vsp=0; //zera velocidade
}
y = y + vsp; //move em y
//essa parte esta depois da colisao, tem que ser antes
//------------------------------------------------------------
if !place_meeting(x,y+1,obj_invisivel) {
vsp = vsp + grv;
}
//-----------------------------------------------------------
Pegue a parte da gravidade, coloque-a antes da colisão, apague a primeira parte que lhe indiquei e testa, creio que são essas duas partes do código que tá dando errado flw

vlw cara eu to a dois dias tentando arrumar isso sorrindo2 blz

ultima pergunta, como eu marco como resolvido? nervoso
Matheus_Riot
Matheus_Riot

Games Ranking : Sem avaliações

Data de inscrição : 04/01/2021
Reputação : 0
Número de Mensagens : 6
Prêmios :  - [Resolvido]Problema Colisão 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

NPH gosta desta mensagem

Ir para o topo Ir para baixo

 - [Resolvido]Problema Colisão Empty Re: [Resolvido]Problema Colisão

Mensagem por Diemorth Qui 07 Jan 2021, 11:28

Você pode ir na mensagem inicial, clicar em editar, depois desce até opções e clica no botão "resolvido". Very Happy

 - [Resolvido]Problema Colisão FckBjDb
Diemorth
Diemorth

Games Ranking : Sem avaliações

Data de inscrição : 26/01/2020
Reputação : 61
Número de Mensagens : 208
Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 2

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Unity
  • Java
  • Web Tecnology
  • Unreal
  • Javascript
  • RPG Maker
  • C ou C++
  • Outros


https://diemorth.github.io/diemorth

NPH e theguitarmester gostam desta mensagem

Ir para o topo Ir para baixo

 - [Resolvido]Problema Colisão Empty Re: [Resolvido]Problema Colisão

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos