¿Cómo se maneja típicamente la detección de colisión y el movimiento en un FPS, particularmente manejando cambios leves en la altura del suelo, como escaleras (tanto en inclinación como en declive)?
fuente
¿Cómo se maneja típicamente la detección de colisión y el movimiento en un FPS, particularmente manejando cambios leves en la altura del suelo, como escaleras (tanto en inclinación como en declive)?
Las entidades típicamente representadas por una cápsula (cilindro con esferas en los extremos) contra la geometría mundial (o una malla de colisión simplificada) para la colisión mundial.
Las escaleras generalmente no chocan con una rampa invisible o, por debajo de cierta altura, generalmente se levanta como un efecto secundario de la resolución de colisión. (obtendrá interpenetración con el movimiento como parte del tamaño del paso, y la resolución lo elevará como el plano más cercano)
Creo que así es como funciona Unreal 3, pero podría estar equivocado. Recuerdo haber visto una jerarquía de recuadros delimitadores en Source, pero no recuerdo si fue solo para el combate. independientemente, las cápsulas son simples y rápidas
En Unity 3D, la forma más fácil es tener el controlador en primera persona. Por lo general, el personaje tiene que saltar si la altura del paso es mayor que el desplazamiento del paso. Pero otra forma de hacerlo es agregar un colisionador de cajas y rotarlo para que el personaje pueda subir las escaleras fácilmente, como si fuera una rampa.
La respuesta de Brady es buena, pero si quieres una forma maliciosa de hacerlo, puedes lanzar un rayo a la geometría de colisión del terreno, averiguar a qué triángulo golpea y luego usar un promedio ponderado de la altura de los verts del triángulo para averiguar la altura del suelo.