目录
1. Dynamic Friction(动态摩擦)换个名字你一定熟悉,滑动摩擦力
前文回顾,我们必须记住碰撞产生的必要条件,两个物体都有碰撞器,至少一个物体有刚体
好的,我们来进入今天的主题,Unity中的碰撞器。
一、碰撞器
如图所示,可以看到有很多collider,带2D的就是2D碰撞器,接下来我们会着重几个常用的碰撞器讲解。
3D碰撞器种类
1. Box Collider(盒型碰撞器)
Edit Collier 可以自己手动调整碰撞体的曲线范围,可以更加准确的贴合模型
用途:适用于方形/矩形物体(如箱子、墙壁)。一般你直接创建的3D物体会自带一个这样的碰撞器
参数:
Size:定义碰撞盒的 XYZ 轴向尺寸。
Center:调整碰撞盒相对于物体中心的偏移。
优点:计算效率高,性能消耗最低。
缺点:无法贴合复杂形状。
2. Sphere Collider(球形碰撞器)
用途:适用于球体或近似球形的物体(如炮弹、头部碰撞检测)。
参数:
Radius:控制球体半径。
Center:调整球心位置。
优点:计算速度快,适合动态物体的快速碰撞检测。
缺点:仅适用于对称圆形物体。
3. Capsule Collider(胶囊碰撞器)
用途:常用于角色控制器(如人体、圆柱形物体)。
参数:
Height:胶囊总高度。
Radius:半球端和圆柱体的半径。
Direction:胶囊朝向(X/Y/Z 轴)。
优点:结合球体和圆柱体的优势,适合角色移动时的稳定碰撞检测。
缺点:无法适配非对称形状。
4. Mesh Collider(网格碰撞器)
用途:精确贴合复杂模型(如高精度地形、不规则物体)。
参数:
Mesh:指定用于生成碰撞的网格。你可以直接使用别人的这个网格信息,直接拖过来就是
Convex:勾选此复选框可启用 Convex。如果启用此属性,该 Mesh Collider 将与其他 Mesh Collider 发生碰撞。Convex Mesh Collider 最多 255 个三角形。你可以理解为为一个对象身上,他不是一个完整的个体,而是由不同的这种小网格组成的碰撞体,局部满足碰撞。
Cooking Options:就是处理碰撞模型的不同处理方式
启用或禁用影响物理引擎对网格处理方式的网格烹制选项。
-None
禁用下方列出的所有 Cooking Options
-Everything
启用下方列出的所有 Cooking Options。
-Cook for Faster Simulation
使物理引擎烹制网格以加快模拟速度。启用此设置后,这会运行一些额外步骤,以保证生成的网格对于运行时性能是最佳的。这会影响物理查询和接触生成的性能。禁用此设置后,物理引擎会使用更快的烹制速度,并尽可能快速生成结果。因此,烹制的 Mesh Collider 可能不是最佳的。
-Enable Mesh Cleaning
使物理引擎清理网格。启用此设置后,烹制过程会尝试消除网格的退化三角形以及其他几何瑕疵。此过程生成的网格更适合于在碰撞检测中使用,往往可生成更准确的击中点。
-Weld Colocated Vertices
使物理引擎在网格中删除相等的顶点。启用此设置后,物理引擎将合并具有相同位置的顶点。这对于运行时发生的碰撞反馈十分重要。
优点:完全贴合模型表面,精度最高。
缺点:性能消耗大,非凸面体(Concave)仅适用于静态物体。
5. Wheel Collider(车轮碰撞器)
用途:专为车辆模拟设计(如汽车轮胎)。
参数:
Mass
车轮的质量
Radius
车轮的半径
Wheel Damping Rate(车轮阻尼率)
作用:控制车轮旋转的阻力(类似“惯性”),影响车辆加速/刹车的响应速度。
值越大,车轮旋转阻力越大,车辆加速变慢,刹车更快停止。
典型应用:高阻尼率模拟越野车轮胎,低阻尼率适合赛车。
Suspension Distance 控制车轮悬挂系统的弹性和阻尼,模拟车辆减震效果。
车轮悬架的最大延伸距离(在局部空间中测量)。悬架始终向下延伸穿过局部 Y 轴。
Spring(弹簧刚度):值越大,悬挂越“硬”(如 35000),车辆颠簸时反弹更快;值小则悬挂更“软”,适合越野车。
Damper(阻尼系数):值越大(如 4500),悬挂运动阻力越大,能快速抑制弹簧震动,避免车身反复摇晃。
Target Position(目标位置):悬架的初始平衡位置(范围 0~1),0.5 表示悬挂默认处于中间位置。
Force App Point Distance 控制车辆加速/刹车时轮胎与地面的摩擦力(沿车轮前进方向)。
此参数定义车轮上的受力点。此距离应该是距车轮底部静止位置的距离(沿悬架行程方向),以米为单位。当 forceAppPointDistance = 0 时,受力点位于静止的车轮底部。较好的车辆会使受力点略低于车辆质心。
Extremum Slip(极值滑移率):达到最大摩擦力的滑移率阈值(如 0.4)。例如,车辆急加速时,轮胎滑移率达到 0.4 时摩擦力最大。
Extremum Value(极值摩擦力):滑移率为 Extremum Slip 时的最大摩擦力系数(如 1)。
Asymptote Slip(渐近滑移率):摩擦力开始下降的滑移率(如 0.8),超过此值后摩擦力逐渐减小。
Asymptote Value(渐近摩擦力):滑移率极高时的基础摩擦力(如 0.5)。
Stiffness(刚度系数):调整摩擦曲线整体强度,值越大摩擦力越强(通常配合物理材质全局调整)。
6. Terrain Collider(地形碰撞器)
用途:专门适配 Unity 的 Terrain 系统(如开放世界地形)。这个我们后面再学习
参数:
Terrain Data:关联地形数据。
Enable Tree Colliders:是否启用树木碰撞。
优点:自动匹配地形高度图,节省手动配置时间。
二、材质相关
如图,可手动创建材料,Create->Physic Material,注意我们创建的物理材质,另一个材质指的是模型的渲染材质
可以看到很多参数,不急,慢慢介绍
1. Dynamic Friction(动态摩擦)换个名字你一定熟悉,滑动摩擦力
作用:控制物体 运动时 与接触表面之间的摩擦力。
值范围:0(无摩擦)到 1(最大摩擦)。
示例:
冰面:动态摩擦设为 0.1,物体滑动距离长。
橡胶:动态摩擦设为 0.8,物体快速停止。
2. Static Friction(静态摩擦)
作用:控制物体 静止时 与接触表面之间的摩擦力,决定物体开始运动所需的力。
值范围:0(极易滑动)到 1(极难滑动)。
示例:
斜面放置的木箱:若静态摩擦低,轻微倾斜就会滑落。
3. Bounciness(弹性)
作用:控制物体碰撞后的反弹强度。
值范围:0(无反弹)到 1(完全弹性碰撞,能量无损失)。
示例:
篮球:弹性设为 0.8,反弹高度高。
黏土:弹性设为 0,碰撞后无反弹。
4. Friction Combine(摩擦组合模式)
作用:当两个物体接触时,决定如何计算它们的 总摩擦系数。
可选模式:
Average:取两者摩擦值的平均值。
Minimum:取两者中较小的摩擦值。
Maximum:取两者中较大的摩擦值。
Multiply:将两者摩擦值相乘。
示例:
冰面(摩擦 0.1)与橡胶(摩擦 0.8)接触时:
Average:总摩擦为 0.45。
Minimum:总摩擦为 0.1(物体会滑动更远)
5. Bounce Combine(反弹组合模式)
作用:当两个物体碰撞时,决定如何计算它们的 总反弹强度。
可选模式:与 Friction Combine 相同(Average、Minimum 等)。
示例:
弹性球(弹性 1)与地面(弹性 0)碰撞时:
Average:总弹性为 0.5(中等反弹)。
Maximum:总弹性为 1(完全反弹)。
三、总结
一、3D 碰撞器类型汇总表
碰撞器类型 | 用途 | 核心参数 | 优点 | 缺点 |
---|---|---|---|---|
Box Collider | 方形/矩形物体(如箱子、墙壁) | Size (尺寸)、Center (中心偏移) |
计算效率高,性能消耗最低 | 无法贴合复杂形状 |
Sphere Collider | 球体或近似球形物体(如炮弹、头部检测) | Radius (半径)、Center (球心位置) |
计算速度快,适合动态物体 | 仅适用于对称圆形物体 |
Capsule Collider | 角色控制器(如人体、圆柱形物体) | Height (高度)、Radius (半径)、Direction (胶囊朝向) |
移动稳定,结合球体与圆柱体优势 | 无法适配非对称形状 |
Mesh Collider | 复杂模型(如高精度地形、不规则物体) | Mesh (指定网格)、Convex (凸面体)、Cooking Options (处理方式) |
完全贴合模型,精度最高 | 性能消耗大,非凸面体仅限静态 |
Wheel Collider | 车辆轮胎模拟 | Mass (质量)、Radius (半径)、Suspension Distance (悬架行程)、Force App Point Distance (受力点距离)、Wheel Damping Rate (阻尼率) |
内置车辆物理特性(摩擦力、悬挂) | 需配合 Rigidbody 使用,参数复杂 |
Terrain Collider | 地形系统适配(如开放世界) | Terrain Data (地形数据)、Enable Tree Colliders (启用树木碰撞) |
自动匹配地形高度图,节省配置时间 | 仅适用于 Unity 地形系统 |
二、物理材质参数汇总表
参数 | 作用 | 值范围/模式 | 示例场景 |
---|---|---|---|
Dynamic Friction | 控制物体 运动时 的滑动摩擦力 | 0 (无摩擦)到 1 (最大摩擦) |
冰面(0.1)、橡胶(0.8) |
Static Friction | 控制物体 静止时 的静摩擦力,决定开始运动所需的力 | 0 (极易滑动)到 1 (极难滑动) |
斜面木箱(低值易滑落) |
Bounciness | 控制碰撞后的反弹强度 | 0 (无反弹)到 1 (完全弹性碰撞) |
篮球(0.8)、黏土(0) |
Friction Combine | 计算两物体接触时的总摩擦系数 | Average (平均值)、Minimum (最小值)、Maximum (最大值)、Multiply (乘积) |
冰面与橡胶接触(Average=0.45) |
Bounce Combine | 计算两物体碰撞时的总反弹强度 | 同上 | 弹性球与地面碰撞(Maximum=完全反弹) |