Fórum Sharpgames
 
 
  Forum  Criação de Jogo...  Algoritmos  Colisão 2D - Qual usar?
Anterior Anterior
 
Próximo Próximo
Nova Entrada 23/7/2009 11:37
  Bispo Snake
1 tópicos
Sem Ranking




Colisão 2D - Qual usar? 
Boas,

Eu estou fechando um game com alguns amigos e surgiram algumas dúvidas sobre qual colisão usar para nosso game em 2D, e queria saber qual a opinião dos amigos do fórum a respeito.

Estamos usando a colisão por pixel e até agora está funcionando perfeitamente. Só temos alguns problemas no que se refere a colisão com chão / parede, pois o personagem está ultrapassando um pouco a textura da parede e do chão, e acaba "travando" dentro dessas texturas por conta disso.

Aí, pesquisando, soubemos que existe além dessa colisão por pixel, a colisão por retângulo (que talvez seja a mais correta a se usar nesse caso) e a colisão por pontos geométricos, que a princípio é a mais complicada de se fazer.

O que os amigos do fórum acham? Quais foram os problemas que vocês encontraram relacionado a colisão? Existe algum método de colisão que é melhor que o outro, ou depende do que vamos fazer?

Abs[]
Snake.
 
Nova Entrada 23/7/2009 16:45
  jalf
165 tópicos
Iniciante




Re: Colisão 2D - Qual usar? 
Eu já passei por um problema semelhante, usando colisão por pixel, onde o passo da movimentação era > 1 pixel por vez (x = x + 3, por exemplo). Nesse caso realmente ocorrem situações onde o sprite "entra" no outro. Eu resolvi isso muito facilmente reposicionando o sprite, quando a colisão era detectada, de forma a ele ficar "fora" do outro sprite.
A colusão por alguma estrutura geométrica (retângulo, circulo, etc) vai depender da forma a ser testada e da precisão que você precisa para essa colisão. No seu caso me parece que por pixel é mais eficiente, só tomando cuidado de não deixar seu sprite "entrar" em outro após a colisão ser detectada.

Microsoft Most Valuable Professional e Administrador do Sharpgames. jalfbr's Gamercard
 
Nova Entrada 23/7/2009 16:48
  lcolnaghi
32 tópicos
8th Level Poster


Re: Colisão 2D - Qual usar? 

Opa. certamente tu pode misturar varios tipos de colisao... Acho certo que tu crie varias etapas de colisao, principalmente pra evitar calculo pesado, por exemplo, para precisao realista tu vai fazer colisao por poligonos/ pixels, mas para saber se tu realmente quer calcular isso tu utiliza uma aabb ( axis-aligned bounding box - um retangulo de colisao sempre alinhado aos eixos xy ), o que te faz desnescessario calcular colisao por pixel/poligono p/ cada objeto.
A biblioteca de fisica  FarseerPhysics suporta colisao por poligonos, bem como outras primitivas como caixas/circulos, etc... ela tem um metodo que tu passa a tua textura e ela cria uma lista de vertices com colisao "perfeita" dos teus objetos. Ela implementa tambem tecnicas de fases de colisao, com Grid, aabb, etc...
Se tu quiser implementar isso na mao, te aconselho a dar uma olhada no codigo dessa lib...

E para a colisao do teu personagem por exemplo, acho que e meio desnescessario colisao por pixels, uma caixa representando a area de colisao dele custa bem menos e tem o mesmo efeito, dependendo do gameplay.


 
Anterior Anterior
 
Próximo Próximo
  Forum  Criação de Jogo...  Algoritmos  Colisão 2D - Qual usar?
Logos do XBox 360, XNA e Games For Windows
Copyright 2006-2012 por SharpgamesPolítica de Privacidade  |  Termos de Uso