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)?

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


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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.