Ah, of course – I’m making a first-person game (not really an FPS, more of an action-adventure / RPG the likes of King’s Field or Elder Scrolls). You generally start off moving pretty slowly, but there may be some very fast characters in the end-game. I will try to limit that since high speeds can be game-breaking in a game which is balanced around a certain character speed, but I do want the player to be rewarded in satisfying ways, one of which should be movement speed. But, I digress.
The character controller’s collision type was also of concern to me. I thought that I’d use a collisionCapsule sort of like Unity tends to use, but I read in the documentation that the capsule is not very good to use as a “from” object like the player. But I decided I will probably use two or more spheres to represent the player – at least one for the head, and one for the torso. Then I use a raycast to check for floor collisions at the player’s feet. So far it seems to be working, anyway, but I’m not sure if this is a good solution especially for collisions with walls and other terrain.
For the actual collision geometry I figured I would create one model for the visual representation, and another simplified model that could serve at the collision geometry, which would be created after the visual model. So like a corridor with an archway and little decorative pieces coming out of the walls would be simplified to just four polygons for the walls, floor and ceiling, and maybe a collisionBox for the archway. So with the way I’m designing my models, the geometry will be perfectly flush together, like there won’t be any natural gaps in the geometry – I’m not sure if that matters for the avoidance of holes.
There will be floors above floors. But I’m afraid I’m not quite sure what you mean by the following:
you might instead check for sudden changes in the floor-height, and then use a secondary foot-collider to check for nearby floor-geometry, using the old floor-height if such nearby geometry is found.
Wouldn’t this interfere with falling off ledges when intended by the player? Or even accidentally falling over the edge on a precarious cliffside? Or am I misunderstanding?
About the fluid methods – I’m already using the FluidPos method on the character controller just in case, although I don’t think they will ever need it. When I used Unity I turned on a similar feature for the character controller by default so it’s a habit. But for fast moving projectiles that would be definitely something to remember to do, for sure.
Thanks again! you are very helpful.