Comment la détection des collisions et les mouvements sont-ils généralement gérés dans un FPS, en particulier pour gérer de légers changements de hauteur du sol tels que les escaliers (à la fois en pente et en pente)?
Comment la détection des collisions et les mouvements sont-ils généralement gérés dans un FPS, en particulier pour gérer de légers changements de hauteur du sol tels que les escaliers (à la fois en pente et en pente)?
Réponses:
Entités généralement représentées par une capsule (cylindre avec des sphères aux extrémités) contre la géométrie du monde (ou un maillage de collision simplifié) pour une collision mondiale.
Les escaliers sont généralement sans collision avec une rampe invisible, ou en dessous d'une certaine hauteur, vous obtenez généralement un soulèvement comme effet secondaire de la résolution de la collision. (vous obtiendrez une interpénétration avec le mouvement dans le cadre de la taille du pas, et la résolution le fera apparaître vers le haut en tant que plan le plus proche)
Je pense que c'est ainsi que fonctionne Unreal 3, mais je peux me tromper. Je me souviens avoir vu une hiérarchie de boîte englobante dans Source, mais je ne me souviens pas si c'était juste pour le combat. peu importe, les capsules sont simples et rapides
Dans Unity 3D, le moyen le plus simple est d'avoir le contrôleur à la première personne. Habituellement, le personnage doit sauter si la hauteur du pas est supérieure au décalage du pas. Mais une autre façon de le faire est d'ajouter un collisionneur de boîtes et de le faire pivoter afin que le personnage puisse facilement parcourir les escaliers, comme s'il s'agissait d'une rampe.
La réponse de Brady est bonne, mais si vous voulez un moyen hacky de le faire, vous pouvez simplement lancer un rayon vers la géométrie de collision de votre terrain, déterminer le triangle qu'il frappe, puis utiliser une moyenne pondérée de la hauteur des verts du triangle pour déterminer la hauteur du sol.