【学习目标】
碰撞检测
-
能够让两个游戏物体之间产生碰撞
-
能够让两个物体碰撞时表现出不同效果
-
能够通过代码检测到碰撞产生的不同阶段
-
能够使用触发器让两个物体相互穿透
-
能够通过代码检测到触发产生的不同阶段
【碰撞检测】
【碰撞的必要条件】
两个游戏物体(GameObject)之间
至少有一个物体有刚体组件(Rigidbody)
并且两个物体都有碰撞盒组件(Collider)
【实例】
上方物体挂载了刚体和碰撞盒
下方物体挂载了碰撞盒
运行后由于上方物体有刚体组件
并且Use Gravity默认勾选
所以它会受重力影响自由下落
【刚体组件】
让游戏物体(GameObject)
受到力的作用
参数说明
红色字为重要参数
其余了解即可
Mass
对象的质量(默认为千克)
Drag
根据力移动对象时影响对象的空气阻力大小。0 表示没有空气阻力,无穷大使对象立即停止移动
Angular Drag
根据扭矩旋转对象时影响对象的空气阻力大小。0 表示没有空气阻力。请注意,如果直接将对象的 Angular Drag 属性设置为无穷大,无法使对象停止旋转。
Use Gravity
如果启用此属性,则对象将受重力影响。
Is Kinematic
如果启用此选项,则对象将不会被物理引擎驱动,只能通过 (Transform) 对其进行操作。对于移动平台,或者如果要动画化附加了 HingeJoint 的刚体,此属性将非常有用。
Interpolate
仅当在刚体运动中看到急动时才尝试使用提供的选项之一。
-None
不应用插值。
-Interpolate
根据前一帧的变换来平滑变换。
-Extrapolate
根据下一帧的估计变换来平滑变换。
Collision Detection
用于防止快速移动的对象穿过其他对象而不检测碰撞。
-Discrete
对场景中的所有其他碰撞体使用离散碰撞检测。其他碰撞体在测试碰撞时会使用离散碰撞检测。用于正常碰撞(这是默认值)。
-Continuous
对动态碰撞体(具有刚体)使用离散碰撞检测,并对静态碰撞体(没有刚体)使用基于扫掠的连续碰撞检测。设置为_连续动态 (Continuous Dynamic) 的刚体将在测试与该刚体的碰撞时使用连续碰撞检测。其他刚体将使用离散碰撞检测。用于连续动态 (Continuous Dynamic) 检测需要碰撞的对象。(此属性对物理性能有很大影响,如果没有快速对象的碰撞问题,请将其保留为 Discrete 设置)
-Continuous Dynamic
对设置为连续 (Continuous)和连续动态 (Continuous Dynamic)碰撞的游戏对象使用基于扫掠的连续碰撞检测。还将对静态碰撞体(没有刚体)使用连续碰撞检测。对于所有其他碰撞体,使用离散碰撞检测。用于快速移动的对象。
-Continuous Speculative
对刚体和碰撞体使用推测性连续碰撞检测。这也是可以设置运动物体的唯一 CCD 模式。该方法通常比基于扫掠的连续碰撞检测的成本更低。
Constraints
对刚体运动的限制。
-Freeze Position
有选择地停止刚体沿世界 X、Y 和 Z 轴的移动。