物理系统(2/3)

Rigidbody(刚体组件)

概念:

  通过物理模拟控制一个物体的位置。

  添加Rigidbody组件到一个对象,这就置于了Unity的物理引擎下使其运动。即使没有添加任何代码,刚体对象也将在重力的影响下下落,如果带有碰撞器的对象与之碰撞,并将做出反应。

  从脚本添加力到刚体对象上,以真实的物理方法来控制它。例如,轿车的行为可以给轮胎施加力,物理引擎处理运动的其他方面,因此,会有更真实的加速度和正确的碰撞反应。

  在脚本,FixedUpdate函数中被推荐放置应用力以及修改刚体设置(相对于Update,应用其他大部分更新任务)。物理更新的时间间隔与update是不一致的,在每个物理更新之前,FixedUpdate被立即调用,所以所作的任何更改会直接处理。

  当刚体运行开始常见的问题是,游戏物理引擎看上去运行像“慢镜头”。这实际上由于你模型的大小,默认重力设置假定为每世界单位1米距离。对非物理游戏,你的模型缩放100单位也没有多大差别,但当使用物理引擎,它们将被视为非常大的对象。如果应该是小对象使用较大的缩放,它们将出现下落很慢,物理引擎认为它是非常大的对象,下落较大的距离。考虑到这一点,请确保你的对象接近真实生活的大小(例如,轿车应该是大约4单位=4米)。

对于Unity引擎来说,所有力学的处理都应该放在FixedUpdate进行。

注意:不要更改Time属性中的固定时间,如果更改了可能会造成物理引擎不同步问题

面板属性:

    Mass
        物体质量(单位“千克”)
        注意:质量不能为0,而且质量尽量大于10,保持在[0.1 -- 10]范围内;
    Drag
        平移方向的阻力
        他不代表物体和物体的接触阻力,他只表达空气对物体的阻力
    Angluar Drag
        选择的空气角阻力
    User Gravity
        是否使用重力
        这个选项表示你是否使用世界正方向上的下压力
    Is Kinematic
        是否遵循牛顿物理学定律
        注意:如果为true,他会让刚体失去,力学、碰撞、万有引力;
    Interpolate
        物理运动差值
        提供在物理运动上时候的逐帧渲染效果,如果使用该选择但是你的帧渲染不够快会导致物体的轻微抖动现象,所以我们建议这个属性尽量应用在主角身上而不是NPC身上
    Collision Detection
        碰撞检测模式
            Discrete
                非连续性碰撞,效率高但是精度很低,适用于慢动作物体
            Continuous
                连续碰撞检测
                效率适中,精度有所提高,适用于汽车这样高速但是体积庞大的物体运动
            ContinuousDynamic
                连续动态碰撞
                精度最高,但是效率最差,适用于体积较小碰撞紧密的运动物体,例如:炮弹
    Constraints
        冻结平移运动和选择运动
        他可以讲物体的三个轴上的平移力忽略掉,也可以忽略三个轴上的旋转力。他和User Gravity 不一样,他是让这些轴永远不发生任何力的效果

Rigidbody API

参见 Unity 常用 API

● 2.13 RigidBody

🔚