文档

Unity Engine


User Manual

Script Reference

Unity Engine


Configure Rigidbody Colliders

How to configure Colliders on a Rigidbody so that the physics system can accurately detect collisions.
阅读时间2 分钟最后更新于 1 个月前

Colliders define the physical boundaries of a Rigidbody. To allow collisions to occur, you must add Colliders to a GameObject alongside a Rigidbody.
If one Rigidbody collides with another, the physics engine only calculates a collision if both GameObjects have a Collider attached. If one GameObject has a Rigidbody but no Collider, it passes through other GameObjects, and Unity does not include it in collision calculations.

Colliders define the physical boundaries of a Rigidbody

The relative Mass of each Rigidbody in a collision determines how they react when they collide with each other.
See Collision for more information.

Convex and concave collider geometry

The PhysX physics system requires that any collider you place on a non-kinematic Rigidbody is convex, not concave. All primitive shapes in Unity are convex. However, Unity considers a Mesh Collider concave by default.
If you apply a default Mesh Collider to a non-kinematic Rigidbody, Unity throws an error at runtime. To ensure that your non-kinematic Rigidbody receives physics-based forces, you need to instruct Unity to make the Mesh Collider convex. To do this, enable the Mesh Collider’s Convex property. When Convex is enabled, Unity automatically calculates a convex collider shape (called a hull) based on the associated mesh. However, because the convex hull of the mesh is only an approximation of the original shape, it can lead to inaccurate simulation.
For a more accurate collision simulation, you can use one of the following approaches:
  • Use a DCC tool to split the mesh into several parts, so that when Unity calculates their convex hulls, they represent the total shape better.
  • Use several primitive Colliders to manually build a Compound Collider that is the same shape as the mesh.
  • Use automatic tools that calculate convex approximations of any mesh, such as Unity’s V-HACD.
If a Rigidbody is kinematic (that is, it receives no physics-based forces), you can apply any collider to it.