一个 碰撞体用于处理对象物理碰撞的不可见形状。碰撞体不需要与对象的网格完全相同形状 - 粗略的近似通常更有效,并且在游戏玩法中难以分辨。 更多信息
参见 术语表的类型根据其游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路径点等等。游戏对象的功 能由附加在其上的组件定义。 更多信息
参见 术语表的碰撞体和物理体组件的配置来定义其与其他碰撞体的交互方式。
Unity 文档中提到了以下碰撞体类型
有关不同碰撞体类型如何交互的详细信息,请参阅碰撞体类型之间的交互。
静态碰撞体是没有关联的刚体或关节体的碰撞体(即,关联的游戏对象上没有刚体或关节体),因此不会响应模拟物理力。其他碰撞体可以与静态碰撞体发生碰撞,但静态碰撞体不会响应碰撞当物理引擎检测到两个游戏对象的碰撞体接触或重叠时,就会发生碰撞,前提是至少一个具有刚体组件并且处于运动状态。 更多信息
参见 术语表而移动。
对于始终保持在同一位置且从不四处移动的几何体(例如,地板、墙壁和场景的其他静止元素),请使用静态碰撞体。
在运行时移动静态碰撞体的唯一方法是通过 Transform。但是,在大多数情况下,您不应这样做。物理系统无法在计算物理更新时立即考虑 Transform 驱动的移动,并且如果您通过 Transform 移动静态碰撞体,可能会看到意外的副作用。相反,您应该只将静态碰撞体用于在运行时不移动的碰撞体几何体。如果您希望一个碰撞体不响应物理力,但可以在运行时以物理系统可以检测和计算的方式移动,请考虑使用运动学物理体碰撞体。
由于静态碰撞体并非设计为移动或临时碰撞体,因此物理系统不会响应静态碰撞体的移动或消失而重新计算或唤醒物理体。例如:如果您将一辆汽车(带有物理体和车轮碰撞体)放置在静态碰撞体上,则车轮碰撞体地面车辆的特殊碰撞体。它具有内置的碰撞检测、车轮物理和基于滑动的轮胎摩擦模型。它可以用于车轮以外的对象,但它是专为带轮车辆设计的。 更多信息
参见 术语表检测到碰撞体并停留在其上。在没有输入的几帧后,汽车的物理体和碰撞体会进入睡眠状态。如果静态碰撞体移动,您可能会期望汽车随之移动或掉落。但是,物理系统不会响应静态碰撞体的移动而唤醒汽车的物理体,因此汽车会停留在原位。
物理体碰撞体是在与物理体(刚体或关节体)相同的 GameObject 上的碰撞体。物理体碰撞体包含在物理计算中,但其行为因其是动态的还是运动学的而异(即,Is Kinematic是否已禁用或启用)。
刚体可以是动态的或运动学的。关节体只能是动态的;它不能是运动学的。
动态碰撞体是在与动态物理体相同的 GameObject 上的碰撞体。动态碰撞体响应模拟物理力。它们可以与其他对象(包括静态碰撞体)发生碰撞,并且其他碰撞体可以移动它们或对其施加力。
对于希望物理系统包含在物理计算中并通过物理力移动的任何 GameObject,请使用动态碰撞体。
默认情况下,物理体碰撞体是动态的。
运动学碰撞体是在与运动学刚体相同的 GameObject 上的碰撞体。关节体不能是运动学的。
与静态碰撞体类似,运动学碰撞体不会响应模拟物理力。其他碰撞体可以与运动学碰撞体发生碰撞,但运动学碰撞体不会响应碰撞而移动。
与静态碰撞体不同,物理系统可以将运动学碰撞体包含在物理计算中。运动学碰撞体可以
对于大多数情况下充当静态碰撞体,但您也希望能够偶尔移动的碰撞体(例如,通常充当不可移动物理障碍但可以在必要时打开的滑动门),请使用运动学碰撞体。
您可以使用Rigidbody.isKinematic
在运行时根据需要通过脚本在动态和运动学之间切换刚体碰撞体。这可能是管理不总是需要动态的碰撞体的性能的一种有用方法。例如,切换碰撞体类型的常见用例是创建“布娃娃”效果,其中角色通常在动画下移动,但会对强烈的碰撞做出物理反应。角色的肢体默认可以是运动学的,并通过动画移动,但特定的碰撞体可以触发刚体禁用IsKinematic
,以便肢体成为动态的并表现得像物理对象。
不同的碰撞体类型(静态、运动学和动态)根据每对碰撞体的配置而以不同的方式交互。有关更多详细信息,请参阅碰撞体交互。