Se (para fins de detecção de colisão) objetos 3D são representados em um jogo por esferas, qual é um bom algoritmo para detectar uma colisão entre esferas?
Se cada objeto tiver uma posição a partir do último quadro e uma nova posição (desejada), o que é um bom algoritmo que identificará colisões nas quais as esferas não se cruzam no quadro anterior e podem não se cruzar no segundo quadro, mas eles se cruzam em algum lugar no meio?
fonte
Use um teste de varredura, conforme demonstrado neste artigo do Gamasutra.
fonte
Em cima da minha cabeça:
E isso é tudo o que há, espero que seja bem rápido.
fonte
Aqui está outro bom artigo da Gamasatura .
fonte
Falando como alguém que fez isso: não vale a pena . A menos que o design do seu jogo absolutamente precise dele, e quase certamente não, você gastará muito mais esforço trabalhando varrendo do que realmente espera. E será mais lento do que você queria.
fonte
Há um artigo sobre como obter a detecção de colisão com matemática no Flipcode . Tem círculo. Há como detectar com precisão o ponto de colisão e verificar se há alguma colisão.
fonte
A detecção de colisão para um objeto em movimento é normalmente chamada de "Cálculo do volume varrido". Aqui estão alguns códigos / artigos sobre esse assunto.
http://www.gpu-voxels.org/demos/ (demonstração)
Bibliotecas de código fonte:
https://github.com/fzi-forschungszentrum-informatik/gpu-voxels
https://libigl.github.io/tutorial/#swept-volume
https://github.com/gradientspace/geometry3Sharp
Artigos:
http://gamma.cs.unc.edu/SV/sm03.pdf
https://www.cs.columbia.edu/~allen/PAPERS/abrams.swept.pdf (Nenhum código fonte, infelizmente)
http://www.realtimerendering.com/intersections.html (coleção bastante pesada de links)
fonte