Collisions for Character Constraint - Best Practices

What are the best practices and trade-offs for both performance and collider creation for typical 3D third or first person games? I’m looking for advanced information since I’ve been doing this in Unity in many projects over many years and am interested in seeing if Unity has any new approaches, or what other experts think.

Typically, I use terrain for outdoors but have been happy with systems that create their own models for streets, mounds of rocks, etc. Still, when walking in a cave or up stairs with railings, I end up creating a lot of extra convex colliders along with my models. I have used mesh collider (convex on) when breaking a model into parts (like arches or curved walls might have three or more boxes to approximate the curves). I have also leveraged an interesting method that was shared with me, where one will use the navmesh to constrain the player character - an unusual controller but it does work but then has issues since the camera still needs colliders if it is high and, say above the ceiling, etc. At one point I read about a system that actually looks at the visual polygons via light raycasting, as opposed to the normal physic raycasting. Alternatively, I’ve try to use other plugins from the asset store, but they take me more time to use than creating the colliders in the modeling software (I used Blender to create simple sibling objects that I remove the renderer later in Unity).

Anyway, wanted some feedback from other level designer or game play experts on their take. I will reference this question in Nov 16 Unite’s “Ask the Expert”.


Hi, thanks for your question. I’ll see if I can help…

I’m not an expert in this area so I checked with some other folks internally. The answer I got back is focused mostly on how you can handle camera collisions, hope this helps…

They suggest to use sphere cast for figuring out camera collision. This removes the need to have a collider on a camera in a 3rd person controller. You can do the same for first person controllers but it could be preferable to use capsule cast there as most fps controllers can be handled via a capsule representation, rather than driving via RigidBody. But if the user prefers the later you can use a RigidBody with 1-2 capsules depending on the complexity of their controller

Thanks Dave for the feedback. The camera suggestions are great.
Yes, please do check with the others. My main question has to do with the best ways to create colliders (pipeline-wise) or other methods to restrict user and camera. So, for example, sphere cast is great, one still needs something to cast against. Sphere cast only works for colliders, though I wish there was some performant way to use it for all (or culled/nearby) visible meshes. Someday this will be the norm, but for now collider creation is one of the most labor intensive aspects of game dev, in my opinion.

Anyway, yes, keep me informed, and thanks!