版本:Unity 6 (6000.0)
语言:English
轮碰撞器
轮碰撞器摩擦力

轮碰撞器简介

为了在 Unity 中模拟准确的轮子行为,您需要为每个轮子使用一个轮 碰撞体一种用于处理对象物理碰撞的不可见形状。碰撞体不需要与对象的网格完全相同形状 - 粗略的近似值通常更有效,并且在游戏玩法中难以分辨。 更多信息
参见 术语表
轮碰撞器地面车辆的特殊碰撞体。它具有内置的碰撞检测、车轮物理和基于滑动的轮胎摩擦模型。它可以用于轮子以外的对象,但它是专门为带轮子的车辆设计的。 更多信息
参见 术语表
管理车轮旋转和车辆移动,并且还具有模拟悬架系统的属性。

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

轮碰撞器射线投射

轮碰撞器在 场景场景包含游戏的环境和菜单。可以将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,您放置环境、障碍物和装饰,本质上是分块设计和构建您的游戏。 更多信息
参见 术语表
视图中显示为一个 2D 圆圈(参见 轮碰撞器可视化)。但是,它实际上是一个单独的 物理射线投射。PhysX 沿着悬架方向通过车轮中心沿局部 Y 轴向下投射射线。射线投射的起点和终点位于以下点

  • 射线投射从车轮顶部略微上方开始,处于最大悬架 压缩一种存储数据的方法,它减少了所需存储空间。参见 纹理压缩动画压缩音频压缩构建压缩
    参见 术语表
    (即,在 半径 的正上方,在 Y 轴上的 悬架距离 的顶部)。
  • 射线投射从车轮底部略微下方结束,处于最大悬架伸展(即,在 半径 的正下方,在 Y 轴上的 悬架距离 的底部)。

这种射线投射配置意味着轮碰撞器在移动时实际上不会在其他表面(例如地面)上滚动。在播放模式下,轮碰撞器的旋转不会改变。但是,车轮模型的旋转确实需要改变,以便车轮看起来像是在地面上滚动。为了实现这一点,模型和碰撞体需要在两个单独的 游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路点等。游戏对象的函数由附加到它的组件定义。 更多信息
参见 术语表
上。轮碰撞体的变换应相对于车辆固定,并且模型应该能够旋转。然后,您可以配置轮碰撞器将其全局位置发送到车轮模型,并通过脚本旋转车轮模型。有关此工作流程的示例,请参阅演练 使用轮碰撞器创建示例车辆

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

为射线投射轮碰撞器准备地面

射线投射设置的一个重要含义是,车轮并不总是平滑地向上滚动或向下跨越路面水平的变化(例如,从道路上向上滚动到台阶上)。当遇到台阶或路缘时,车轮可能会发生剪切,然后仅在中心线越过台阶时“弹出”

Two frames of a Wheel collider vehicle navigating a step (a sharp increase in the ground surface). In the first frame, the wheel appears to clip through the step. This is because the raycast at the center of the wheel model has not yet reached the step. In the second frame, the wheel model appears correctly on the step. This change happens when the raycast at the center of the wheel detects a change in height, causing the wheel to appear to “pop” up the step rather than roll realistically.
轮碰撞器车辆导航台阶(地面表面急剧升高)的两帧。在第一帧中,车轮似乎穿过台阶剪切。这是因为车轮模型中心的射线投射尚未到达台阶。在第二帧中,车轮模型正确地显示在台阶上。当车轮中心的射线投射检测到高度变化时,就会发生此更改,导致车轮看起来像是在台阶上“弹出”,而不是真实地滚动。

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

Two frames of a Wheel collider vehicle navigating a drop (a sharp decrease in the ground surface). In the first frame, the wheel appears to sit correctly over the drop. This is because the raycast at the center of the wheel model has not yet reached the drop. In the second frame, the wheel model appears to have fallen into the drop. This change happens when the raycast at the center of the wheel detects a change in height, causing the wheel to appear to drop suddenly rather than roll realistically.
轮碰撞器车辆导航下落(地面表面急剧下降)的两帧。在第一帧中,车轮似乎正确地位于下落之上。这是因为车轮模型中心的射线投射尚未到达下落。在第二帧中,车轮模型似乎掉入了下落。当车轮中心的射线投射检测到高度变化时,就会发生此更改,导致车轮看起来突然下降,而不是真实地滚动。

因此,地面 碰撞当物理引擎检测到两个游戏对象的碰撞体接触或重叠时,就会发生碰撞,前提是至少一个具有刚体组件并且正在运动。 更多信息
参见 术语表
几何体必须尽可能平滑,以确保模拟平滑且准确。如果地面有凸起或凹陷,则必须对其进行测试和迭代,以确保您对车轮的行为感到满意。

轮碰撞器可视化

选择轮碰撞器时,场景视图对您正在创建的世界进行交互式查看。您可以使用场景视图来选择和放置场景、角色、摄像机、灯光和所有其他类型的游戏对象。 更多信息
参见 术语表
会显示一个 gizmo与场景中游戏对象关联的图形叠加层,并在场景视图中显示。内置场景工具(例如移动工具)是 Gizmos,您可以使用纹理或脚本创建自定义 Gizmos。某些 Gizmos 仅在选择游戏对象时绘制,而其他 Gizmos 无论选择哪些游戏对象都会由编辑器绘制。 更多信息
参见 术语表
,它提供了一些关键轮碰撞器属性的可视化。

A single Wheel collider gizmo in the Scene view. In this screenshot, all meshes are disabled in order to clearly display the gizmo.
场景视图中的单个轮碰撞器 gizmo。在此屏幕截图中,所有网格都已禁用,以便清楚地显示 gizmo。

gizmo 的视觉指示如下

  • 大型 2D 圆圈:表示物理车轮的大小。要更改大小,请使用轮碰撞器的 半径 属性。
  • 水平绿色线:表示轮碰撞器沿 X 轴的中点。此线的角度表示车轮的旋转。
  • 小型 3D 球体:表示施加车轮力的点。要更改此值,请使用轮碰撞器的 力应用点距离 属性。
  • 垂直橙色线:线的顶部和底部点表示车轮由于施加在其上的力而可以从其中心点上下(沿垂直 Y 轴)移动的最大距离。要更改此值,请使用轮碰撞器的 悬架距离 属性。橙色线与绿色线相交的点表示车轮在没有力或作用在其上的力相等时所处的“静止”点。要更改此值,请使用轮碰撞器的 目标位置一个关节属性,用于设置关节驱动力的目标位置,该驱动力的目标位置应将其移动到该位置。 更多信息
    参见 术语表
    属性。

您可以使用 gizmo 可视化进行快速参考和调试。

轮碰撞器
轮碰撞器摩擦力