创建复合碰撞体
复合碰撞体用于处理对象物理碰撞的不可见形状。碰撞体不需要与对象的网格完全相同形状 - 粗略的近似值通常更有效,并且在游戏玩法中难以区分。 更多信息
参见 术语表是在同一个父刚体允许游戏对象受模拟重力和其它力的影响的组件。 更多信息
参见 术语表游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路点等。游戏对象的功用由附加在其上的组件定义。 更多信息
参见 术语表上的一组碰撞体游戏对象。有关何时以及为何可能使用复合碰撞体的详细信息,请参阅复合碰撞体简介。
复合碰撞体由具有刚体组件的父游戏对象和具有碰撞体的子游戏对象组成。
规划复合碰撞体
在构建复合碰撞体之前,请考虑要将碰撞体用于什么以及如何排列碰撞体。
- 如果只需要碰撞体提供碰撞,而不是任何碰撞当物理引擎检测到两个游戏对象的碰撞体接触或重叠时,就会发生碰撞,前提是至少一个具有刚体组件并且正在运动。 更多信息
参见 术语表或触发事件,则可以以任何方式排列碰撞体,包括重叠,只要覆盖了运行时应充当碰撞体的所有空间即可。
- 如果需要碰撞体调用碰撞或触发事件,则需要以确保不存在重叠的方式排列复合碰撞体。您还可以计划实现标签您可以分配给一个或多个游戏对象的参考词,以帮助您识别用于脚本编写的游戏对象。例如,您可以为游戏中玩家可以食用的任何物品定义和“可食用”标签。 更多信息
参见 术语表和层(图层)以确保只有特定的碰撞体调用碰撞和触发事件。
- 如果需要检测物品的哪个部分参与了碰撞,请通过碰撞体分隔物品区域。例如,在一个当玩家触碰其正面时打开的宝箱上,您可以在正面和背面各放置一个碰撞体。
- 如果另一个碰撞体需要沿着您的复合碰撞体滑动(例如,角色在冰上滑动),请尝试在该表面上只有一个碰撞体,以减少从一个碰撞体接触到另一个碰撞体过渡期间的抖动。
没有一种完美的排列复合碰撞体的方法;效率始终取决于形状、所需行为以及项目中的其他元素。因此,您应该始终对复合碰撞体进行测试以检查其行为是否符合预期,并且您应该使用物理分析器测试不同的排列和配置以实现计算效率。
构建复合碰撞体
- 创建或选择父游戏对象。在大多数情况下,这是包含网格Unity 的主要图形基元。网格构成了 3D 世界的大部分内容。Unity 支持三角形或四边形多边形网格。Nurbs、Nurms、细分曲面必须转换为多边形。 更多信息
参见 术语表和网格渲染器一个网格组件,它从网格过滤器获取几何体并在对象变换组件定义的位置渲染它。 更多信息
参见 术语表的游戏对象。
- 向父游戏对象添加刚体,并根据项目需要对其进行配置(请参阅刚体物理简介)。
- 创建一个空的游戏对象作为父游戏对象的子对象。
- 右键单击父游戏对象,然后选择创建空游戏对象。
- 向新的空游戏对象添加碰撞体。
- 在检查器一个 Unity 窗口,显示有关当前选定的游戏对象、资源或项目设置的信息,允许您检查和编辑值。 更多信息
参见 术语表窗口中,选择添加组件。
- 选择碰撞体形状。您可以在复合碰撞体上使用任何碰撞体形状。在大多数情况下,您应该选择最能准确表示您正在构建的碰撞体的最简单的形状。
- 放置新的碰撞体。
- 使用变换或定位快捷方式来放置碰撞体。
- 测试并观察刚体的行为。碰撞体配置的更改可能会更改刚体的质心代表刚体中所有质量的平均位置,用于物理计算。默认情况下,它根据属于刚体的所有碰撞体计算,但可以通过脚本修改。 更多信息
参见 术语表,这可能会导致一些意想不到的行为。
- 根据需要重复步骤 4-6,添加尽可能多的碰撞体。
如果需要将相同的复合碰撞体应用于多个游戏对象,可以复制父游戏对象或使用预制件一种资源类型,允许您存储一个完整的游戏对象,包括组件和属性。预制件充当模板,您可以从中在场景中创建新的对象实例。 更多信息
参见 术语表。
自动生成复合碰撞体
在资源商店Unity 和社区成员创建的免费和商业资源不断增长的库。提供各种各样的资源,从纹理、模型和动画到完整的项目示例、教程和编辑器扩展。 更多信息
参见 术语表上提供了多种第三方工具,可以根据游戏对象的网格自动生成复合碰撞体。这些工具很有用,可以节省时间,但其输出仍然需要测试,并且可能需要进行一些调整才能完全有效。您应该对它们应用与手动构建的碰撞体相同的测试级别。