Conectar-se
Quem está conectado
20 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 19 Visitantes

NPH

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Nota C
Notas recebidas : D-B-C
Data de inscrição : 08/09/2010
Número de Mensagens : 914
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 5

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://luizgm.blogspot.com/

[Ajuda]Colisões exatas.

em Qui 17 Fev 2011, 17:40
Gostaria de fazer tipo de um sistema de colisões exatas, ou seja "infalíveis", bem vou dar um exemplo:
Colisão com lado direito do Bloco:
Código:
if hspeed<>0{hspeed=0}//Freia
Colisão com lado esquerdo do Bloco:
Código:
if hspeed<>0{hspeed=0}//Freia
Colisão com lado de cima do Bloco:
Código:
move_contact_solid(270,12) //Colisão sólida
vspeed=0 //Parar o pulo
Colisão com lado de baixo do Bloco:
Código:
vspeed=1 //Parar o pulo, mas indo para baixo
other.alarm[0]=1 //Somente exemplo
E ai? Alguém pode me ajuda?
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 1 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: [Ajuda]Colisões exatas.

em Qui 17 Fev 2011, 17:56
Sim amigo, mas qual seria a sua pergunta? Não entendi o que você quer saber.
avatar
Ranking : Nota C
Notas recebidas : D-B-C
Data de inscrição : 08/09/2010
Número de Mensagens : 914
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 5

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://luizgm.blogspot.com/

Re: [Ajuda]Colisões exatas.

em Qui 17 Fev 2011, 17:57
oquê coloquei na citação é o que quero fazer, mas não tenho idéia de como fazer


Última edição por luiz_100juizo em Sex 18 Fev 2011, 16:16, editado 2 vez(es)
avatar
Ranking : Nota A
Notas recebidas : B A
Data de inscrição : 20/12/2008
Número de Mensagens : 2516
Insígnias de JAM :

Insignia 1x 1 Insignia 2x 0 Insignia 3x 0
Reputação : 177

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://redscreensoft.blogspot.com

Re: [Ajuda]Colisões exatas.

em Qui 17 Fev 2011, 18:08
avatar
Ranking : Nota B
Notas recebidas : B-B
Data de inscrição : 28/02/2010
Número de Mensagens : 559
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 12

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://gsogaming.blogspot.com/

Re: [Ajuda]Colisões exatas.

em Qui 17 Fev 2011, 18:08
Esses códigos servem se você colocar eles na colisão do jogador com o bloco.
Maas você pode fazer de um jeito mais simples:

COLISÃO DO JOGADOR COM O BLOCO
Código:
move_contact_solid(direction,0.1) http://0.1 deixa a colisão mais perfeita
Flws!
avatar
Ranking : Nota C
Notas recebidas : D-B-C
Data de inscrição : 08/09/2010
Número de Mensagens : 914
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 5

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://luizgm.blogspot.com/

Re: [Ajuda]Colisões exatas.

em Qui 17 Fev 2011, 18:20
não, não é nada disso...
ja ouvi isso em algum lugar..
é tipo:
bbox_right
bbox_left
acho que é assim


Última edição por luiz_100juizo em Sex 18 Fev 2011, 16:16, editado 1 vez(es)
avatar
Ranking : Nota B
Notas recebidas : B-B
Data de inscrição : 28/02/2010
Número de Mensagens : 559
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 12

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://gsogaming.blogspot.com/

Re: [Ajuda]Colisões exatas.

em Qui 17 Fev 2011, 18:23
Por que você quer usar bbox se dá pra fazer uma boa colisão bem mais simples?
Usa o código que eu postei, vai funcionar perfeitamente.
avatar
Ranking : Nota C
Notas recebidas : D-B-C
Data de inscrição : 08/09/2010
Número de Mensagens : 914
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 5

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://luizgm.blogspot.com/

Re: [Ajuda]Colisões exatas.

em Qui 17 Fev 2011, 18:31
mas o problema é, eu quero checar o lado colidido, mas não sei como


Última edição por luiz_100juizo em Sex 18 Fev 2011, 16:15, editado 1 vez(es)
avatar
Ranking : Nota B
Notas recebidas : B-B
Data de inscrição : 28/02/2010
Número de Mensagens : 559
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 12

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://gsogaming.blogspot.com/

Re: [Ajuda]Colisões exatas.

em Qui 17 Fev 2011, 19:20
luiz_100juizo escreveu:mas o problema é, eu quero checar o lado colidido, mas não sei como

Para checar qual lado está colidindo faz isso:

COLISÃO DO JOGADOR COM O BLOCO
Código:
if instance_place(x+2,y,other) or instance_place(x-2,y,other) //Se estiver colidindo à esquerda ou à direita do bloco
{if hspeed<>0{hspeed=0} //Freia}

if instance_place(x,y+1,other) //Se estiver colididndo por cima do bloco
{move_contact_solid(270,0.1) //Colisão sólida
vspeed=0 //Parar o pulo}

if instance_place(x,y-1,other) //Se estiver colididndo por baixo do bloco
{vspeed=1 //Parar o pulo, mas indo para baixo
other.alarm[0]=1 //Somente exemplo}

Flws!
avatar
Ranking : Nota C
Notas recebidas : D-B-C
Data de inscrição : 08/09/2010
Número de Mensagens : 914
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 5

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://luizgm.blogspot.com/

Re: [Ajuda]Colisões exatas.

em Sex 18 Fev 2011, 16:13
não ta dando certo, esse código entra em conflito com a gravidade
avatar
Ranking : Nota A
Notas recebidas : B A
Data de inscrição : 20/12/2008
Número de Mensagens : 2516
Insígnias de JAM :

Insignia 1x 1 Insignia 2x 0 Insignia 3x 0
Reputação : 177

Prêmios
   : 2
   : 1
   : 1
Ver perfil do usuáriohttp://redscreensoft.blogspot.com

Re: [Ajuda]Colisões exatas.

em Sex 18 Fev 2011, 16:25
Amigo, você pode fazer o seguinte. Use place_meeting para checar as colisões:

Código:
//checa se o obj_2 está colidindo na direita do objeto deste código
if place_meeting(x+5,y,obj_2){//acontece alguma coisa}

//checa se o obj_2 está colidindo na esquerda do objeto deste código

if place_meeting(x-5,y,obj_2){//acontece outra coisa ou a mesma coisa de antes}

FLWS!
avatar
Ranking : Nota A
Notas recebidas : A - A
Data de inscrição : 15/02/2009
Número de Mensagens : 1479
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 9

Prêmios
   : 1
   : 0
   : 1
Ver perfil do usuáriohttp://www.indiegamebr.com

Re: [Ajuda]Colisões exatas.

em Sex 18 Fev 2011, 16:35
o código do alex esta correto mas pode melhorar ainda.

1º vc tem que saber qual o comprimento total do objeto bloco e dividi-lo por 2, e substituir pelo número 5 no código do alex acima. Isso fará a colisão ocorrer nos extremos do objeto bloco.
avatar
Ranking : Nota C
Notas recebidas : D-B-C
Data de inscrição : 08/09/2010
Número de Mensagens : 914
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 5

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://luizgm.blogspot.com/

Re: [Ajuda]Colisões exatas.

em Sex 18 Fev 2011, 16:49
não, não está dando certo...
quando uso o move_solid ele atravessa mesmo assim
avatar
Data de inscrição : 24/05/2008
Número de Mensagens : 2417
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 14

Prêmios
   : 0
   : 2
   : 0
Ver perfil do usuário

Re: [Ajuda]Colisões exatas.

em Sex 18 Fev 2011, 18:38
Se quer fazer colisões boas mesmo então pode parar de usar hspeed, vspeed, friction e gravity. Usar essas variáveis só vão dificultar as coisas.
Você vai precisar montar o seu próprio sistema, assim você tem total controle de tudo. Usando hspeed/vspeed você ja perde o tempo de quando os objetos vão se mover ou quando a colisão é checada. Alem de que elas sofrem influencia do speed e direction automaticamente e isso dificulta ainda mais.
avatar
Ranking : Nota B
Notas recebidas : B-B
Data de inscrição : 28/02/2010
Número de Mensagens : 559
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 12

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://gsogaming.blogspot.com/

Re: [Ajuda]Colisões exatas.

em Sex 18 Fev 2011, 18:51
luiz_100juizo escreveu:não, não está dando certo...
quando uso o move_solid ele atravessa mesmo assim
Você colocou o objeto bloco como solid?
Se não, esse é problema, o objeto bloco tem que ser solid.
avatar
Ranking : Nota C
Notas recebidas : C-B
Data de inscrição : 17/04/2010
Número de Mensagens : 136
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 11

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [Ajuda]Colisões exatas.

em Sex 18 Fev 2011, 19:14
Você não quer que grude na parede, é isso? Tipo, quando o jogador pular, mas tocar o lado da parede, ele não ficar "grudado", como acontece em muitos jogos? Se for isso, nessa engine que eu fiz (inclui rampa e movimentação) tem como resolver, é só adicionar um simples código que resolve.

http://gmbr.forumeiros.com/t14249-movimento-e-rampas-iniciantes

Acho que é isso. Se não for, a gente tenta ajudar denovo.

avatar
Ranking : Nota C
Notas recebidas : D-B-C
Data de inscrição : 08/09/2010
Número de Mensagens : 914
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 5

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://luizgm.blogspot.com/

Re: [Ajuda]Colisões exatas.

em Seg 21 Fev 2011, 17:07
Rhino escreveu:Acho que é isso. Se não for, a gente tenta ajudar denovo.
não, não é isso ¬¬...
tem certeza que leu o tópco?
~~topic:
Código:
if (y < other.y) && (vspeed>0) //Checa se está em cima
{
move_contact_solid(270,12)
vspeed=0
}
else // Se esta nos outros lados do bloco, menos em cima
{
hspeed=0
}
esse código só checa se colidido em cima do bloco, e as ações do else se aplicam para baixo e para os lados do bloco, então será que daria certo fazer o código ao contrario? pois eu gostaria de checar se colidiu exatamente debaixo do bloco
avatar
Ranking : Nota B
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 1 Insignia 3x 0
Reputação : 52

Prêmios
   : 0
   : 2
   : 1
Ver perfil do usuáriohttp://xcreatorgames.weebly.com/

Re: [Ajuda]Colisões exatas.

em Seg 21 Fev 2011, 18:13
Amigão, basta você colocar esse código no
Evento END STEP

if (place_meeting(x, y, objParede))
{
x = xprevious;
y = yprevious;
move_contact_solid(direction, 10);
hspeed = 0;
vspeed = 0;
}

Isso vai ajustar sua colisão perfeitamente.
Não se esqueça, tem que ser no End Step.
Flws!
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum