两个物体碰撞产生的必要条件:两个物体都有碰撞器,并且至少一个物体有刚体。即Rigidbody组件。新建一个Unity项目,打开之后创建一个平面和一个正方体,将其调整至如图所示:
然后给正方体添加Rigidbody组件,添加后运行即可看到正方体落地了:
Rigidbody组件默认情况下是这样的:
质量:
即对象的指令,他的默认单位为千克,质量越大,惯性越大。
阻力:
即模拟空气阻力,默认值为0。根据力移动对象时影响对象的空气阻力大小,阻力值越大,对对象的影响越大,对象的下降速度越慢。
角阻力:
根据扭矩旋转对象时,设置空气阻力对物体的影响有多大,即阻力大小。0 表示没有空气阻力。要注意的是,不能仅通过将对象的角度拖动设置为无穷大来使对象停止旋转。
使用重力:
顾名思义,勾选后将给物体添加重力效果,不勾选则不添加。
Is Kinematic:
如果启用此选项,则对象将不会被物理引擎驱动,只能通过(Transform)对其进行操作。对于移动平台,或者如果要动画化附加了HingeJoint的刚体,此属性将会非常有用。
插值:
插值有三个选项,分别为无、插值和外推,系统默认为无。
无:不应用插值运算
插值:根据前一帧的变换来平滑变换
外推:根据下一帧的估计变换来平滑变换
碰撞检测:
碰撞检测用于防止快速移动的对象穿过其他对象而不检测碰撞的情况。碰撞检测有离散的、持续、连续动态和Continuous Speculative四个选项可以使用。
离散的:对场景中的所有其他碰撞体使用离散碰撞检测,其他碰撞体在测试碰撞时会使用离散碰撞检测,用于正常碰撞。
持续:对动态碰撞体(具有刚体)使用离散碰撞检测,并对静态碰撞体(没有刚体)使用连续碰撞检测。设置为持续状态的刚体将在测试与该刚体的碰撞时使用连续碰撞检测。(该属性对物理性能有很大影响,如果没有快速对象的碰撞问题,请将其保留为Discrete设置)其他刚体将使用离散碰撞检测。
连续动态:对设置为持续和连续动态状态的碰撞的游戏对象使用连续碰撞检测,还将对静态碰撞体(没有刚体)使用连续碰撞检测。对于所有其他的碰撞体,他将使用离散碰撞检测,该模式通常用于快速移动的物体。
Continuous Speculative(连续推测检测):该模式时唯一可以设置运动体的CCD模式,对刚体和碰撞体使用连续推测检测,该方法通常比连续碰撞检测的成本更低。
Constraints(约束):
约束通常用于对刚体运动的限制。
冻结位置:有选择的停止刚体沿世界X、Y和Z轴的移动。
冻结旋转:有选择的停止刚体围绕局部X、Y和Z轴的旋转。