刚体

本文详细介绍了Unity中的刚体组件及其在物理系统中的应用,包括刚体组件的属性如质量、空气阻力、角阻力等,以及如何设置刚体的位置、旋转、力和速度。还探讨了物理系统与Transform的关系,强调了正确使用物理系统避免运动不准确性的注意事项。
摘要由CSDN通过智能技术生成

概述

在整个 Unity 物理系统中,最重要概念就是刚体 Rigidbody

刚体是物理学中的概念,它是指在运动中和受力后,形状和大小不变,并且内部各点相对位置不变的物体。刚体是一种为了方便物理计算而提出的理想化模型,在不需要考虑物体本身的形变时,可以把物体当做刚体进行处理。

在 Unity 中,提供了 Rigidbody 组件,用来模拟刚体,我们叫它刚体组件。给游戏对象添加刚体组件,就能够使游戏对象受到碰撞弹开、能够受到重力下落、能够给其它刚体施加力等。所以刚体组件的主要作用就是:

使游戏对象能够受力和施力

刚体组件

Mass 质量:用来模拟物体的质量,单位为千克。质量会影响惯性大小,而且质量不同的两个刚体相互碰撞时,它们各自的反应也不同。要注意物体的质量大小不会影响自由落体时的速度,想想伽利略的两个铁球同时落地。

Drag 空气阻力:物体受力移动时受到的空气阻力大小,0 表示没有空气阻力。如果想让两个物体自由落体时速度不同,就给它们设置不同的空气阻力。空气阻力越大,物体感觉起来就越轻,比如铁块的空气阻力可以设置为 0.001,羽毛的空气阻力可以设置为 10。这个值一般不需要设置,如有特殊需要的话,就参考铁块和羽毛的阻力范围进行设置。

Angular Drag 角阻力:物体受力旋转时受到的空气阻力大小。因为物体旋转时的速度叫做角速度,所以旋转时受到的阻力就叫做角阻力。这个属性和 Drag 空气阻力属性类似, Drag 空气阻力属性会影响物体在空气中移动时的速度,Angular Drag 角阻力会影响物体在空气中旋转时的速度。

Use Gravity 启用重力:物体是否受重力影响。受重力影响的物体会进行自由落体。

Is Kinematic 运动学:如果我们只是需要让物理系统进行碰撞检测,不需要使用物理系统控制游戏对象,而是在脚本中使用 Transform 控制物体,此时我们可以勾选刚体组件中的 Is Kinematic 属性。

Interpolate 插值:物体在进行物理运动时的插值方式,默认是 None 不使用插值。

-None 不使用插值:这个选项是默认值,一般情况下此选项不需要设置。如果物体在物理系统控制下,会发生轻微的抖动,可以尝试使用另外两种选项。

-Interpolate 插值:这个选项会根据上一帧中物体的 Transform 来计算当前帧的插值。

-Extrapolate 向后推断:这个选项会推断下一帧中物体的 Transform 来计算当前帧的插值。

Collision Detection 碰撞检测:碰撞检测模式,默认是 Discrete 离散检测。

- Discrete 离散检测:对场景中的其它碰撞体使用离散碰撞检测。一般情况下我们不需要修改此属性。物理系统默认的碰撞检测是离散的,所以有时高速移动的刚体会穿透障碍物,此时我们才需要使用另外两种碰撞检测模式。

- Continuous 连续检测:刚体对其它没有刚体的碰撞器采用连续检测,防止刚体速度过快穿透障碍物。比如快速飞行的子弹碰撞静止的墙壁,此时如果采用 Dscrete 离散检测,子弹不会打在墙壁上反弹,而是会穿透墙壁。但该模式下并不能正确检测两颗高速飞行的子弹相互碰撞,因为它们两个都带有刚体,此时请使用第三种模式。要注意连续检测会影响物理性能,非必要情况请使用默

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值