【唐老狮】Unity——物理系统(碰撞检测)

  碰撞检测

  两个游戏物体(GameObject)之间

  并且

  上方物体挂载了刚体和碰撞盒

  下方物体挂载了碰撞盒

  运行后由于上方物体有刚体组件

  并且Use?Gravity默认勾选

  所以它会受重力影响自由下落

  参数说明

  红色字为重要参数

  其余了解即可

  Mass

  Drag

  Angular Drag

  Use Gravity

  Is Kinematic

  如果启用此选项,则对象将不会被物理引擎驱动,只能通过?(Transform)?对其进行操作。对于移动平台,或者如果要动画化附加了?HingeJoint?的刚体,此属性将非常有用。

  Interpolate

  -None

  不应用插值。

  -Interpolate

  根据前一帧的变换来平滑变换。

  -Extrapolate

  根据下一帧的估计变换来平滑变换。

  Collision Detection

  -Discrete

  对场景中的所有其他碰撞体使用离散碰撞检测。其他碰撞体在测试碰撞时会使用离散碰撞检测。用于正常碰撞(这是默认值)。

  -Continuous

  对动态碰撞体(具有刚体)使用离散碰撞检测,并对静态碰撞体(没有刚体)使用基于扫掠的连续碰撞检测。设置为_连续动态 (Continuous Dynamic)?的刚体将在测试与该刚体的碰撞时使用连续碰撞检测。其他刚体将使用离散碰撞检测。用于连续动态 (Continuous Dynamic)?检测需要碰撞的对象。(此属性对物理性能有很大影响,如果没有快速对象的碰撞问题,请将其保留为?Discrete?设置)

  -Continuous Dynamic

  对设置为连续 (Continuous)和连续动态 (Continuous Dynamic)碰撞的游戏对象使用基于扫掠的连续碰撞检测。还将对静态碰撞体(没有刚体)使用连续碰撞检测。对于所有其他碰撞体,使用离散碰撞检测。用于快速移动的对象。

  -Continuous Speculative

  对刚体和碰撞体使用推测性连续碰撞检测。这也是可以设置运动物体的唯一 CCD 模式。该方法通常比基于扫掠的连续碰撞检测的成本更低。

  Constraints

  -Freeze Position

  -Freeze Rotation

  Box Collider(盒装碰撞盒)

  Sphere?Collider(球形碰撞盒)

  Capsule?Collider(胶囊碰撞盒)

  不常用碰撞盒

  性能消耗高

  共有参数含义:

  Is Trigger

  是否是触发器,如果启用此属性,则该碰撞体将用于触发事件,并被物理引擎忽略

  Material

  物理材质,可以确定碰撞体和其它对象碰撞时的交互(表现)方式。

  Center

  碰撞体在对象局部空间中的中心点位置。

  Size

  碰撞体在X、Y、Z方向上的大小

  Radius

  球形碰撞体的半径大小

  Radius

  胶囊体的半径

  Height

  胶囊体的高度

  Direction

  胶囊体在对象局部空间中的轴向

  Mass

  车轮的质量

  Radius

  车轮的半径

  Wheel Damping Rate

  这是应用于车轮的阻尼值

  Suspension Distance

  车轮悬架的最大延伸距离(在局部空间中测量)。悬架始终向下延伸穿过局部 Y 轴。

  Force App Point Distance

  此参数定义车轮上的受力点。此距离应该是距车轮底部静止位置的距离(沿悬架行程方向),以米为单位。当??时,受力点位于静止的车轮底部。较好的车辆会使受力点略低于车辆质心。

  Suspension Spring

  悬架尝试通过增加弹簧力和阻尼力来到达目标位置 (Target Position)

  -Spring

  弹簧力尝试到达目标位置。值越大,悬架达到目标位置就越快

  -Damper

  抑制悬架速度。值越大,悬架弹簧移动就越慢

  -Target Position

  悬架沿悬架距离 (Suspension Distance) 的静止距离。1 对应于完全展开的悬架,0 对应于完全压缩的悬架。默认值为 0.5,与常规汽车的悬架行为匹配。

  Forward Friction

  车轮向前滚动时轮胎摩擦的特性。

  Sideways Friction

  车轮侧向滚动时轮胎摩擦的特性。

  -Extremum Slip

  曲线的极值点。

  -Extremum Value

  曲线的极值点。

  -Asymptote Slip

  曲线的渐近点。

  -Asymptote Value

  曲线的渐近点。

  -Stiffness

  Extremum Value?和?Asymptote Value?的乘数(默认值为 1)。改变摩擦力的刚度。将此值设置为零将完全禁用车轮的所有摩擦力。通常在运行时修改刚度以使用脚本来模拟各种地面材质。

  注意

  不必通过转动或滚动 WheelCollider 对象来控制汽车;附加了 WheelCollider 的对象应始终相对于汽车本身固定

  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

  使物理引擎在网格中删除相等的顶点。启用此设置后,物理引擎将合并具有相同位置的顶点。这对于运行时发生的碰撞反馈十分重要。

  Mesh

  引用需要用于碰撞的网格。

  网格烹制

  网格烹制将常规网格更改为可以在物理引擎中使用的网格。烹制会构建用于物理查询的空间搜索结构(如?Physics.Raycast)以及用于接触生成的支持结构。Unity 在碰撞检测中使用网格之前烹制所有这些网格。这可在导入时 (Import Settings > Model > Generate Colliders) 或运行时进行。

  Terrain Data

  地形数据

  Enable Tree Colliders

  选中此属性时,将启用树碰撞体

  ━━━━━━━━━━━━━━━━━━━━

  ━━━━━━━━━━━━━━━━━━━━

  当物体之间发生碰撞时

  碰撞体与其它对象的

  Project窗口

  ↓

  右键

  ↓

  Create

  ↓

  Physic Material

  Dynamic Friction

  已在移动时使用的摩擦力。通常为 0 到 1 之间的值。值为零就像冰一样,值为 1 将使对象迅速静止(除非用很大的力或重力推动对象)

  Static Friction

  当对象静止在表面上时使用的摩擦力。通常为 0 到 1 之间的值。值为零就像冰一样,值为 1 将导致很难让对象移动。

  Bounciness

  表面的弹性如何?值为 0 将不会反弹。值为 1 将在反弹时不产生任何能量损失,预计会有一些近似值,但可能只会给模拟增加少量能量。

  Friction Combine

  两个碰撞对象的摩擦力的组合方式。

  -Average

  对两个摩擦值求平均值。

  -Minimum

  使用两个值中的最小值。

  -Maximum

  使用两个值中的最大值。

  -Multiply

  两个摩擦值相乘。

  Bounce Combine

  两个碰撞对象的弹性的组合方式。其模式与 Friction Combine 模式相同

  把反弹力改为1

  把这个物理材质

  拖给两个立方体

  运行后效果如下

  通过设置物理材质

  的各个参数

  可以达到不同的

  碰撞表现效果

  ━━━━━━━━━━━━━━━━━━━━

  ━━━━━━━━━━━━━━━━━━━━

  关键参数

  Collision

  将这个Test脚本

  挂载到即可

  运行时

  当产生碰撞时

  进行逻辑处理

  ━━━━━━━━━━━━━━━━━━━━

  ━━━━━━━━━━━━━━━━━━━━

  主要作用

  制作触发器非常简单,只需要在满足,将带有刚体的物体上的

  运行效果

  刚体对象可以穿透对方

  没有物理碰撞效果

  ━━━━━━━━━━━━━━━━━━━━

  ━━━━━━━━━━━━━━━━━━━━

  关键参数

  Collider

  将这个Test脚本

  挂载到即可

  运行时

  当产生触发时

  进行逻辑处理

  ━━━━━━━━━━━━━━━━━━━━

  ━━━━━━━━━━━━━━━━━━━━

  完成了五个学习目标后

  就能基本掌握物理系统的核心

  其中的内容是