Version: Unity 6.0 (6000.0)
语言 : 中文
车轮碰撞体
车轮碰撞体摩擦

车轮碰撞体简介

为了在 Unity 中模拟准确的车轮行为,您可以为每个车轮使用车轮碰撞体。车轮碰撞体管理车轮旋转和车辆运动,还具有模拟悬架系统的属性。

车轮碰撞体组件在 API 中表示为 WheelCollider 类。

车轮碰撞体射线投射

车轮碰撞体在场景视图中显示为 2D 圆形(请参阅车轮碰撞体可视化)。但是,它实际上是单个物理射线投射。PhysX 沿悬架方向沿局部 Y 轴投射光线穿过车轮中心。射线投射的起点和终点位于以下几个点:

  • 射线投射从车轮顶部上方达最大悬架压缩处开始(即,就在半径 (Radius) 外部,在 Y 轴上的悬架距离 (Suspension Distance) 顶部)。
  • 射线投射在车轮底部下方达最大悬架拉伸处结束(即,就在半径 (Radius) 外部,在 Y 轴上的悬架距离 (Suspension Distance) 底部)。

此射线投射配置意味着车轮碰撞体在移动时不会实际在其他表面(例如地面)上滚动。在播放模式下,车轮碰撞体的旋转不会改变。但是,车轮模型的旋转确实需要改变,使车轮看起来沿着地面滚动。为此,模型和碰撞体需要位于两个单独的游戏对象上。车轮碰撞体的变换应该相对于车辆固定,并且模型应该能够旋转。然后,您可以配置车轮碰撞体以将其全局位置发送到车轮模型,并通过脚本旋转车轮模型。有关此工作流程的示例,请参阅演练使用车轮碰撞体创建示例车辆

有关 PhysX 中的车轮碰撞体射线投射设置的更多详细信息,请参阅 PhysX 4.1 Vehicles SDK 文档

为射线投射车轮碰撞体做好准备

射线投射设置的一个重要含义是车轮并不总是平滑地应对路面高度的变化向上或向下滚动(例如,从道路滚动到台阶上)。当遇到台阶或路缘时,车轮可能会卡住,然后仅在中心线与台阶相交时“弹出”:

车轮碰撞体车辆的两帧越过台阶(地面急剧变陡)。在第一帧中,车轮看起来穿过了台阶。这是因为车轮模型中心的射线投射尚未达到此步骤。在第二帧中,车轮模型在台阶上正确显示。当车轮中心的射线投射检测到高度变化时,会发生此变化,导致车轮看起来“弹出”台阶而不是逼真地滚动。
车轮碰撞体车辆的两帧越过台阶(地面急剧变陡)。在第一帧中,车轮看起来穿过了台阶。这是因为车轮模型中心的射线投射尚未达到此步骤。在第二帧中,车轮模型在台阶上正确显示。当车轮中心的射线投射检测到高度变化时,会发生此变化,导致车轮看起来“弹出”台阶而不是逼真地滚动。

当中心点到达时,射线投射也可能滑落到道路上的小凹陷或台阶中:

车轮碰撞体车辆的两帧越过小凹陷(地面急剧变陡)。在第一帧中,车轮看起来正确位于小凹陷上方。这是因为车轮模型中心的射线投射尚未到达小凹陷。在第二帧中,车轮模型似乎已跌落到小凹陷中。当车轮中心的射线投射检测到高度变化时,会发生此变化,导致车轮看起来突然下降而不是逼真地滚动。
车轮碰撞体车辆的两帧越过小凹陷(地面急剧变陡)。在第一帧中,车轮看起来正确位于小凹陷上方。这是因为车轮模型中心的射线投射尚未到达小凹陷。在第二帧中,车轮模型似乎已跌落到小凹陷中。当车轮中心的射线投射检测到高度变化时,会发生此变化,导致车轮看起来突然下降而不是逼真地滚动。

因此,地面碰撞几何体必须尽可能平滑,以确保模拟平滑准确。如果地面凹凸不平,必须对其进行测试和迭代以确保您对车轮的行为感到满意。

车轮碰撞体可视化

选择车轮碰撞体时,场景视图会显示一个辅助图标,提供一些关键车轮碰撞体属性的可视化。

场景视图中的单个车轮碰撞体辅助图标。在此截屏中,为了清晰显示辅助图标,禁用了所有网格。
场景视图中的单个车轮碰撞体辅助图标。在此截屏中,为了清晰显示辅助图标,禁用了所有网格。

辅助图标的视觉指标如下:

  • 2D 大圆圈:表示物理车轮的大小。要更改大小,请使用车轮碰撞体的半径 (Radius) 属性。
  • 水平绿线:表示车轮碰撞体沿 X 轴的中间点。此线的角度表示车轮的旋转。
  • 3D 小球体:表示施加车轮力的点。要更改此值,请使用车轮碰撞体的力作用点距离 (Force App Point Distance) 属性。
  • 垂直橙色线:线的顶部和底部点表示车轮由于受力而从其中心点上下(沿垂直 Y 轴)移动的最大距离。要更改此值,请使用车轮碰撞体的悬架距离 (Suspension Distance) 属性。橙线与绿线相交的点表示车轮在没有作用力或受到相等作用力时所处的“静止”点。要更改此值,请使用车轮碰撞体的目标位置 (Target Position) 属性。

您可以使用辅助图标可视化来快速参考和调试。

车轮碰撞体
车轮碰撞体摩擦