版本: Unity 6 (6000.0)
语言 : 英语
复合碰撞器
创建复合碰撞器

复合碰撞器简介

一个 复合 碰撞器用于处理对象物理碰撞的不可见形状。碰撞器不需要与对象的网格形状完全相同 - 大致的近似通常更有效,并且在游戏玩法中无法区分。更多信息
参见 术语表
是在同一 刚体允许游戏对象受到模拟重力和其它力的影响的组件。更多信息
参见 术语表
游戏对象Unity 场景中的基本对象,可以代表角色、道具、场景、摄像机、路径点等等。游戏对象的的功能由附加到它的组件来定义。更多信息
参见 术语表
上的碰撞器集合。

复合碰撞器共同表现得像一个单个刚体碰撞器。当您需要一个凹形形状的精确碰撞器,或者您的模型如果用 网格碰撞器一个自由形式的碰撞器组件,它接受网格引用来定义其碰撞表面形状。更多信息
参见 术语表
模拟会过于计算量大时,它们很有用。

复合碰撞器的构建

复合碰撞器由以下元素组成

  • 具有刚体的父游戏对象
  • 包含碰撞器的空子游戏对象

复合碰撞器应该只有一个刚体,它应该位于根游戏对象上。

有关如何创建复合碰撞器的更多指导,请参见 创建复合碰撞器

A compound collider setup on a gun model. Five colliders make up an approximation of the model’s shape.
在枪模型上设置的复合碰撞器。五个碰撞器组成模型形状的近似值。

在上图中,枪模型 游戏对象在其父游戏对象上附加了一个刚体,以及几个子游戏对象,每个子游戏对象都具有一个基本碰撞器。当物理力移动刚体父对象时,子碰撞器会随之移动。基本碰撞器可以与环境中的其它碰撞器碰撞,而父刚体会根据这些 碰撞当物理引擎检测到两个游戏对象的碰撞器发生接触或重叠时,就会发生碰撞,前提是至少有一个碰撞器具有刚体组件并且处于运动状态。更多信息
参见 术语表
改变其移动方式。

这种配置比包含刚体和多个碰撞器的单个游戏对象提供了更大的灵活性。当每个碰撞器都在不同的游戏对象上时,您可以单独修改每个碰撞器的变换。但是,在重新定位碰撞器时,您应该监控刚体的行为。碰撞器位置和缩放的更改会改变刚体的 质心代表刚体中所有质量的平均位置,用于物理计算。默认情况下,它由属于刚体的所有碰撞器计算得出,但可以通过脚本进行修改。更多信息
参见 术语表
,如果在运行时在多个帧上连续进行更改,这会导致一些意外的行为。如果发生这种情况,您可以使用 rigidbody.centerOfMass 手动设置质心。

复合碰撞器的工作原理

当您将多个碰撞器附加到同一个刚体时,物理系统将整个集合视为一个单个刚体碰撞器。 碰撞器类型(动态或运动学)由刚体配置定义。

当复合碰撞器接触到另一个碰撞器时,Unity 会为复合体中的每个单独碰撞器注册碰撞。因此,您应该尝试排列碰撞器,以便在运行时只获得您想要的碰撞对,或者使用碰撞器标签来确定由特定碰撞器引起的碰撞行为。

复合碰撞器的优点和局限性

在大多数情况下,复合碰撞器提供了与 网格碰撞器 类似的解决方案:它们的主要目的是为具有复杂形状的物品提供精确的碰撞。在考虑复合碰撞器的优点和局限性时,通常是在将它们与 网格Unity 的主要图形基元。网格构成了 3D 世界的大部分。Unity 支持三角形或四边形多边形网格。NURBS、NURMS、细分曲面必须转换为多边形。更多信息
参见 术语表
碰撞器进行比较。

复合碰撞器的主要优点是

  • 您可以获得复杂凹形形状的碰撞。网格碰撞器更准确,但它们不支持对凹形形状的精确碰撞。
  • 在某些情况下,复合碰撞器比网格碰撞器更节省计算量。对于只需要几个碰撞器来近似的简单形状,或者对于不需要过于精确的形状,情况往往如此。例如,网格碰撞器可能会生成数百个多边形来精确匹配复杂形状,但用基本碰撞器进行近似可能只需要更少的数量。

但是,复合碰撞器也有一些明显的局限性

  • 复合碰撞器不如网格碰撞器精确。在大多数情况下,您是用更简单的形状构建复合碰撞器,这可以让您近似但不能完美匹配项目的形状。
  • 复合碰撞器需要更长的时间来制作。复合碰撞器要求您手动排列每个碰撞器,这需要更多时间。
  • 在某些情况下,复合碰撞器可能比网格碰撞器更节省计算量。对于需要大量碰撞器进行近似的非常复杂的形状,情况往往如此。一个网格碰撞器可能比几个基本碰撞器更有效。

决策总是取决于您的项目,因此您应该测试每种配置并使用物理 探查器一个帮助您优化游戏的窗口。它显示了在游戏的各个区域花费了多少时间。例如,它可以报告渲染、动画或游戏逻辑所花费时间的百分比。更多信息
参见 术语表
来了解您的碰撞器设置的效率。

复合碰撞器
创建复合碰撞器