Colisão!

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

Colisão!

Mensagem por superrafao em Seg 07 Jan 2013, 16:25

Eu estou fazendo um jogo no gênero plataforma!
Eu fiquei desenhando as coisas dele primeiro antes de ir programar, mas resolvi programar logo de uma vez, e tem uma coisa que eu ainda não aprendi muito bem, eu já vi engines boas mas impedia que o personagem andava devagar e ate que ele alcançe a velocidade maxima, (Tipo o Mario, ele começa andar devagar depois vai rapido) a engine boa que eu achei fazia o personagem andar rapido, e o friction perdia seu efeito!
Então sera que alguem poderia me passar um sistema bom para mim estuda-lo?
Obrigado por quem ajudar!

superrafao

Número de Mensagens : 414
Idade : 20
Data de inscrição : 18/08/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Colisão!

Mensagem por Davichococat em Seg 07 Jan 2013, 16:35

Event Create Create:
Código:
velocidade = 0;
velocidade_maxima = 5; //Modifique para o valor que quiser.
aceleracao = 3; //Modifique para o valor que quiser. Medido em pixels por segundo.
Event Step Step:
Código:
x += velocidade; // Posição horizontal (x) adicionada à velocidade
if not(velocidade >= velocidade_maxima) // Caso a velocidade já não esteja no máximo
{
  velocidade +=aceleracao/room_speed; // Aumentar a velocidade.
}

Boa sorte.

Davichococat

Número de Mensagens : 182
Data de inscrição : 29/12/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.google.com

Voltar ao Topo Ir em baixo

Re: Colisão!

Mensagem por superrafao em Seg 07 Jan 2013, 16:40

Davichococat, isso ainda não resolve ainda! Porque o problema e a colisão e não a velociade!

superrafao

Número de Mensagens : 414
Idade : 20
Data de inscrição : 18/08/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Colisão!

Mensagem por Davichococat em Seg 07 Jan 2013, 16:43

Explique novamente a sua pergunta e eu tentarei entender. O primeiro post não ficou claro. O que você quer? O código que eu lhe passei, mas com fricção? O código que eu lhe passei, mas com colisão? Um código totalmente novo de outra coisa?

Davichococat

Número de Mensagens : 182
Data de inscrição : 29/12/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.google.com

Voltar ao Topo Ir em baixo

Re: Colisão!

Mensagem por RafaelCazarotto em Seg 07 Jan 2013, 16:50

então vc quer que ele cheque a colisão?
se for isso no step poem assim
Código:

if keyboard_check(vk_right) and place_free(x+4,y)
{
x+=4
}
if keyboard_check(vk_left) and place_free(x-4,y)
{
x-=4
}
se vc nao quer isso descreva melhor Very Happy

RafaelCazarotto

Ranking : Nota C
Número de Mensagens : 564
Idade : 19
Data de inscrição : 15/03/2012
Notas recebidas : D-D-D-C-C-B
Reputação : 13
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

Voltar ao Topo Ir em baixo

Re: Colisão!

Mensagem por superrafao em Seg 07 Jan 2013, 17:13

Vou dizer mais claramente então! (Era porque minha mãe estava querendo mexer no PC)
E que o sistema de colisão que eu fis, funcionou normalmente, porem somente se o personagem colidir por cima do bloco! Mas se for ao lado do bloco, (qualquer lado) ele atravessa! Já tentei varias maneiras, mas não funcionava muito bem, e ser não for pedir demais, poderia ser um sistema que seja possível o personagem subir inclinações?
Eu sei fazer muita coisa interesante no Game Maker, mas a unica coisa que eu ainda não tenho muita experiencia, e colisões!

superrafao

Número de Mensagens : 414
Idade : 20
Data de inscrição : 18/08/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Colisão!

Mensagem por Davichococat em Seg 07 Jan 2013, 17:20

Me parece que você está detectando colisão usando uma linha.

Mande o seu código e eu vou tentar ajudar.

Davichococat

Número de Mensagens : 182
Data de inscrição : 29/12/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.google.com

Voltar ao Topo Ir em baixo

Re: Colisão!

Mensagem por superrafao em Seg 07 Jan 2013, 17:24

Davichococat escreveu:Me parece que você está detectando colisão usando uma linha.

Mande o seu código e eu vou tentar ajudar.
Então ta né?! '-'
Código:
if (collision_rectangle(x,y-31,x+16,y+32,obj_solid,1,0)) {vspeed=0;gravity=0; noar=false;}else {gravity=0.2; noar=true;}
if(keyboard_check_pressed(32)) && noar=false {vspeed=-9;noar=true; friction=0};

if (keyboard_check(ord("D"))) && ! (keyboard_check(ord("A"))) && (place_free(x-5,y))
{parado=false; andando=true; lado=1;hspeed+=0.3; if hspeed>3 {hspeed=3}};
if (keyboard_check(ord("A"))) && ! (keyboard_check(ord("D"))) && (place_free(x-5,y))
{parado=false; andando=true; lado=0;hspeed-=0.3; if hspeed<-3 {hspeed=-3}}else
{friction=0.07; if hspeed=0 {andando=false;parado=true;obj_player_pernas.parado=true; obj_player_pernas.andando=false}}

superrafao

Número de Mensagens : 414
Idade : 20
Data de inscrição : 18/08/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Colisão!

Mensagem por Davichococat em Seg 07 Jan 2013, 18:33

Você checou a opção "solid" em obj_solid?

Davichococat

Número de Mensagens : 182
Data de inscrição : 29/12/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.google.com

Voltar ao Topo Ir em baixo

Re: Colisão!

Mensagem por superrafao em Seg 07 Jan 2013, 19:25

Não, porque as vezes o collision_rectangle, falha um pouco, e o personagem entra 1 pixel ou mais no bloco, e ele para de andar!

superrafao

Número de Mensagens : 414
Idade : 20
Data de inscrição : 18/08/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Colisão!

Mensagem por Davichococat em Seg 07 Jan 2013, 20:23

O jeito é usar o place_free invés de collision_rectangle. E o place_free só funciona com o solid marcado.

Davichococat

Número de Mensagens : 182
Data de inscrição : 29/12/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.google.com

Voltar ao Topo Ir em baixo

Re: Colisão!

Mensagem por superrafao em Ter 08 Jan 2013, 12:46

Tem certeza? Acho que o "not place_meeting" poderia dar um jeito, mas qual a função ideal para isso?
Lembrando que sou péssimo em colisão ainda, o resto eu até sei fazer no game maker!

superrafao

Número de Mensagens : 414
Idade : 20
Data de inscrição : 18/08/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Colisão!

Mensagem por vinians em Ter 08 Jan 2013, 12:53

Se você quer levar em conta objetos não sólidos, use o place_empty() ele sempre leva em conta qualquer tipo de objetos.
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: Colisão!

Mensagem por superrafao em Ter 08 Jan 2013, 13:03

Mas isso iria atrapalhar, porque se por exemplo o jogador for pegar um item, o personagem vai parar antes de pega-lo! '-'
Mas acho o place_meeting um boa opção, mas como seria a função disso? Alguém me ajuda? =(


Última edição por superrafao em Ter 08 Jan 2013, 13:08, editado 1 vez(es) (Razão : correção gráfica! (Teclado com problemas kkkk))

superrafao

Número de Mensagens : 414
Idade : 20
Data de inscrição : 18/08/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Colisão!

Mensagem por Davichococat em Ter 08 Jan 2013, 13:39

É praticamente a mesma coisa do place_free e place_empty, só que leva em conta objetos.
Código:
place_meeting(x,y,objeto);

Mas porquê não usa linhas de colisão pra detectar se um espaço está vazio?
É ainda melhor que o place_meeting.

Davichococat

Número de Mensagens : 182
Data de inscrição : 29/12/2011
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.google.com

Voltar ao Topo Ir em baixo

Re: Colisão!

Mensagem por superrafao em Ter 08 Jan 2013, 14:55

Davichococat escreveu:É praticamente a mesma coisa do place_free e place_empty, só que leva em conta objetos.
Código:
place_meeting(x,y,objeto);

Mas porquê não usa linhas de colisão pra detectar se um espaço está vazio?
É ainda melhor que o place_meeting.
Eu sei o que esse codigos fazem, não sou iniciante no game maker ta!
Mas vamos fazer melhor, que tal vocês postarem seus codigos de colisão aqui que funcione em superficies inclinadas?

superrafao

Número de Mensagens : 414
Idade : 20
Data de inscrição : 18/08/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Colisão!

Mensagem por Conteúdo patrocinado Hoje à(s) 15:24


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