[Ajuda]Colisões exatas.

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[Ajuda]Colisões exatas.

Mensagem por Luiz A. Oliveira 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?

Luiz A. Oliveira

Ranking : Nota C
Número de Mensagens : 914
Idade : 19
Data de inscrição : 08/09/2010
Notas recebidas : D-B-C
Reputação : 5
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://luizgm.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por vinians em Qui 17 Fev 2011, 17:56

Sim amigo, mas qual seria a sua pergunta? Não entendi o que você quer saber.

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por Luiz A. Oliveira 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)

Luiz A. Oliveira

Ranking : Nota C
Número de Mensagens : 914
Idade : 19
Data de inscrição : 08/09/2010
Notas recebidas : D-B-C
Reputação : 5
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://luizgm.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por Alex FC em Qui 17 Fev 2011, 18:08


Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por Grotle 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!

Grotle

Ranking : Nota B
Número de Mensagens : 559
Idade : 21
Data de inscrição : 28/02/2010
Notas recebidas : B-B
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://gsogaming.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por Luiz A. Oliveira 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)

Luiz A. Oliveira

Ranking : Nota C
Número de Mensagens : 914
Idade : 19
Data de inscrição : 08/09/2010
Notas recebidas : D-B-C
Reputação : 5
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://luizgm.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por Grotle 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.

Grotle

Ranking : Nota B
Número de Mensagens : 559
Idade : 21
Data de inscrição : 28/02/2010
Notas recebidas : B-B
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://gsogaming.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por Luiz A. Oliveira 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)

Luiz A. Oliveira

Ranking : Nota C
Número de Mensagens : 914
Idade : 19
Data de inscrição : 08/09/2010
Notas recebidas : D-B-C
Reputação : 5
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://luizgm.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por Grotle 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!

Grotle

Ranking : Nota B
Número de Mensagens : 559
Idade : 21
Data de inscrição : 28/02/2010
Notas recebidas : B-B
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://gsogaming.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por Luiz A. Oliveira em Sex 18 Fev 2011, 16:13

não ta dando certo, esse código entra em conflito com a gravidade

Luiz A. Oliveira

Ranking : Nota C
Número de Mensagens : 914
Idade : 19
Data de inscrição : 08/09/2010
Notas recebidas : D-B-C
Reputação : 5
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://luizgm.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por Alex FC 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!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por Anderson3d 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.

Anderson3d

Ranking : Nota A
Número de Mensagens : 1479
Idade : 33
Data de inscrição : 15/02/2009
Notas recebidas : A - A
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

http://www.indiegamebr.com

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por Luiz A. Oliveira em Sex 18 Fev 2011, 16:49

não, não está dando certo...
quando uso o move_solid ele atravessa mesmo assim

Luiz A. Oliveira

Ranking : Nota C
Número de Mensagens : 914
Idade : 19
Data de inscrição : 08/09/2010
Notas recebidas : D-B-C
Reputação : 5
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://luizgm.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por Janx 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.

Janx

Número de Mensagens : 2417
Idade : 23
Data de inscrição : 24/05/2008
Reputação : 14
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por Grotle 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.

Grotle

Ranking : Nota B
Número de Mensagens : 559
Idade : 21
Data de inscrição : 28/02/2010
Notas recebidas : B-B
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://gsogaming.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por Rhino 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.


Rhino

Ranking : Nota C
Número de Mensagens : 136
Idade : 24
Data de inscrição : 17/04/2010
Notas recebidas : C-B
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por Luiz A. Oliveira 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

Luiz A. Oliveira

Ranking : Nota C
Número de Mensagens : 914
Idade : 19
Data de inscrição : 08/09/2010
Notas recebidas : D-B-C
Reputação : 5
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://luizgm.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por vinians 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!

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: [Ajuda]Colisões exatas.

Mensagem por Conteúdo patrocinado Hoje à(s) 22:25


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

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