Version: Unity 6.0 (6000.0)
语言 : 中文
连续碰撞检测 (CCD)
推测性 CCD

基于扫掠的 CCD

基于扫掠的 CCD 是用于连续 (Continuous)连续动态 (Continuous Dynamic) 模式的 CCD 算法。

对仅与静止的静态碰撞体(即没有刚体的游戏对象)碰撞的物理体使用连续模式。对与移动的动态碰撞体(即具有动态刚体的游戏对象)碰撞的物理体使用连续动态模式。

连续连续动态模式是最准确的碰撞检测模式。但是它们的计算要求也最高。此外,它们仅适用于由线性移动导致的碰撞,而无法检测由物理体旋转导致的碰撞(例如,弹球杆在绕轴旋转时与球相碰撞)。

了解基于扫掠的 CCD

基于扫掠的 CCD 使用撞击时间 (TOI) 算法来计算可能的碰撞。为此,算法会以对象的当前速度沿着对象的向前轨迹“扫掠”或检测。

从一个时间步长到下一个时间步长的基于扫掠的碰撞检测。请参阅以下图例以了解详细信息。
从一个时间步长到下一个时间步长的基于扫掠的碰撞检测。请参阅以下图例以了解详细信息。

在上图中:

  • A:起始位置上的对象
  • B:根据对象的当前速度,预测对象从现在到下一个时间步长之间将通过的区域
  • C:一个物理时间步长后新位置上的对象

如果沿对象的移动方向上发生了接触,该算法会计算撞击时间并移动对象直至达到该时间。该算法可以从该时间开始执行子步骤;最重要的是,它可以重新计算碰撞后的速度,然后在新轨迹上重新扫掠。

算法检测到障碍物时的基于扫掠的碰撞检测。请参阅以下图例以了解详细信息。
算法检测到障碍物时的基于扫掠的碰撞检测。请参阅以下图例以了解详细信息。

在上图中:

  • A:起始位置上的对象
  • B:基于扫掠的 CCD 算法预测碰撞发生位置上的对象
  • C:原始预测的一个物理时间步长后的位置
  • D:中断线性路径的碰撞体,由基于扫掠的 CCD 算法检测

基于扫掠的 CCD 会对性能产生重大影响,尤其是在广泛用于项目中时。如果附近有大量启用了基于扫掠的 CCD 的高速对象,CCD 的开销将快速增加,因为物理引擎不得不执行更多的扫掠和更多的 CCD 子步骤。

基于扫掠的 CCD 的一个局限性是只能执行线性(或定向)扫掠,而不能执行角度(或旋转)扫掠,这意味着它无法预测物理体旋转时可能发生的碰撞。例如,弹球机上的弹球杆固定在一端并围绕一个固定点旋转;它仅发生旋转运动,没有线性运动。如果还需要考虑对象的旋转,请使用推断性 CCD。

连续碰撞检测 (CCD)
推测性 CCD
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961