Unity基础学习(十三)核心系统—物理系统之碰撞检测组件篇(2)刚体,碰撞体,材质
目录
一、碰撞器
1. Box Collider(盒型碰撞器)
2. Sphere Collider(球形碰撞器)
3. Capsule Collider(胶囊碰撞器)
4. Mesh Collider(网格碰撞器)
5. Wheel Collider(车轮碰撞器)
6. Terrain Collider(地形碰撞器)
二、材质相关
1. Dynamic Friction(动态摩擦)换个名字你一定熟悉,滑动摩擦力
2. Static Friction(静态摩擦)
3. Bounciness(弹性)
4. Friction Combine(摩擦组合模式)
5. Bounce Combine(反弹组合模式)
三、总结
一、3D 碰撞器类型汇总表
二、物理材质参数汇总表
前文回顾,我们必须记住碰撞产生的必要条件,两个物体都有碰撞器,至少一个物体有刚体
好的,我们来进入今天的主题,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=完全反弹) |