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)?
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)?
Respostas:
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
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.
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.