Implementação de sistemas de colisão

7

Apenas curioso sobre o que pode ser uma boa maneira de implementar um sistema de colisão decente. Como uma classe herdada por uma classe de entidade base? Atualmente, estou preso e poderia apenas usar algumas idéias melhores do que as minhas.

Qualquer ajuda é apreciada!

Edit: Desculpe, é 2D Collisioning, mas honestamente, não estou procurando métodos de colisão específicos. Eu estou olhando mais sobre as linhas de implementação. Apenas curioso sobre alguns dos métodos comuns de como implementar sistemas de colisão, como:

Todo o sistema de colisão deve ser de sua própria classe? O que, se houver, deve ser herdável?

Estas são algumas das minhas perguntas. Desculpe pela confusão.

hrr4
fonte
Adicione algumas informações adicionais sobre o que você deseja alcançar. Você precisa de detecção de colisão 2D ou 3D? Quantos objetos terão que ser verificados? De que precisão você precisa?
sum1stolemyname

Respostas:

5

Cada vez que pergunto sobre sistemas de colisão, as discussões (on-line) são assim:

  • "Ei, como devo fazer esse tipo de colisão?"
  • "Você deve tentar este algoritmo."
  • "Não, esse algoritmo seria melhor!"
  • "Talvez uma visão mais global do sistema ajude, como usar esse algoritmo."
  • "Basta pegar o livro de colisões em tempo real e calar a boca."

Então, depois de várias discussões como essa, finalmente comprei o livro: http://realtimecollisiondetection.net/

Ele apresenta todos os aspectos do assunto para informá-lo o suficiente para permitir que você decida o que fazer para cada caso.

Klaim
fonte
Obrigado por me esclarecer. Honestamente, encontrei muitos recursos em diferentes algoritmos. Basta ter um bloco de ideias sobre exatamente como implementar de maneira semi-eficiente / realista. Mais uma vez obrigado.
hrr4
Não tem problema, eu tenho repetido as mesmas perguntas várias vezes e agora que recebi este livro, tenho uma referência sólida para trabalhar imediatamente.
Klaim
3

Esta é uma questão de abordagem de design, portanto, não existe uma solução ideal.

Uma abordagem possível seria criar uma superclasse para objetos colidíveis, que define funções para a detecção de colisões e tem todas as classes de objetos colidíveis herdadas dessa classe.

O funcionamento dessas funções depende de outros parâmetros, como o tipo de detecção de colisão (caixa delimitadora, círculo delimitador, polígono delimitador, por pixel, ...).

sum1stolemyname
fonte
Hm, obrigado pela contribuição. Sim, pelo que encontrei e pelo que estou tentando alcançar (clone de asteróides), decidi por um sistema tipo círculo-círculo-> AABB. Mas, novamente, estava apenas procurando idéias de implementação. Atingir blocos de ideias e apenas buscar um pouco de ajuda :). Obrigado!
hrr4