Detecção e movimento de colisão de FPS

11

Como a detecção e o movimento de colisão normalmente são tratados em um FPS, lidando particularmente com pequenas alterações na altura do solo, como escadas (tanto em declives quanto em declives)?

Jason Kozak
fonte

Respostas:

12

Entidades tipicamente representadas por uma cápsula (cilindro com esferas nas extremidades) contra a geometria do mundo (ou uma malha de colisão simplificada) para colisão no mundo.

As escadas geralmente não colidem com uma rampa invisível ou, abaixo de uma certa altura, você geralmente levanta como um efeito colateral da resolução da colisão. (você obterá interpenetração com o movimento como parte do tamanho da etapa e a resolução a exibirá para cima como o plano mais próximo)

Acho que é assim que o Unreal 3 funciona, mas posso estar errado. Lembro-me de ver uma hierarquia de caixas delimitadoras na Fonte, mas não me lembro se isso era apenas para combate. independentemente, as cápsulas são simples e rápidas

Aaron Brady
fonte
1

No Unity 3D, a maneira mais fácil é ter o controlador em primeira pessoa. Geralmente, o personagem deve pular para cima se a altura do passo for maior que o deslocamento do passo. Mas outra maneira de fazer isso é adicionar um colisor de caixas e girá-lo para que o personagem possa percorrer as escadas facilmente, como se fosse uma rampa.


fonte
0

A resposta de Brady é boa, mas se você quiser uma maneira hacky de fazê-lo, basta lançar um raio até a geometria de colisão do terreno, descobrir qual triângulo ele atinge e, em seguida, usar uma média ponderada da altura dos verts do triângulo para descobrir a altura do solo.

BigSandwich
fonte
E se for um grande triângulo inclinado? Você não consegue encontrar o ponto de interseção do raio?
Gustavo6046
Você já conhece a posição no avião, só precisa da altura, e foi por isso que especifiquei a média ponderada. Eu recomendo que você escolha um livro sobre detecção de colisão, se você realmente quiser ir mais longe. Este não é o melhor formato para aprender matemática.
BigSandwich
Oh sim. Média ponderada. Eu acho que meio que interpretei isso errado. Foi mal.
Gustavo6046