Rigidbody(刚体组件)
Rigidbody简介
Unity 3D 中的 Rigidbody
可以为游戏对象赋予物理特性,使游戏对象在物理系统的控制下接受推力与扭力,从而实现现实世界中的物理学现象。
我们通常把在外力作用下,物体的形状和大小(尺寸)保持不变,而且内部各部分相对位置保持恒定(没有形变)的理想物理模型称为刚体。
刚体(Rigidbody
)是物理引擎中最基本的组件。通过该组件可以给物体添加一些常见的物理属性,如质量、摩擦力、碰撞参数等。
Unity 3D 提供了多个实现接口,开发者可以通过更改这些参数来控制物体的各种物理状态。
刚体在各种物理状态影响下运动,刚体的属性包含:
- Mass(质量)
- Drag(阻力)
- Angular Drag(角阻力)
- Use Gravity(是否使用重力)
- Is Kinematic(是否受物理影响)
- Collision Detection(碰撞检测)
刚体添加方法
在 Unity 3D 中创建并选择一个游戏对象,执行菜单栏中的 Component
→ Physics
→ Rigidbody
命令为游戏对象添加刚体组件。
刚体选项参数
游戏对象一旦被赋予刚体属性后,其 Inspector 属性面板会显示相应的属性参数与功能选项,具体内容如下表所示。
参数 | 含义 | 描述 |
---|---|---|
Mass |
质量 | 物体的质量(任意单位)。建议一个物体的质量不要与其他物体 相差100倍。 |
Drag |
阻力 | 当受力移动时物体受到的空气阻力。0表示没有空气阻力,极大时使物体立即停止运动。 |
Angular Drag |
角阻力 | 当受扭力旋转时物体受到的空气阻力。0表示没有空气阻力, 极大时使物体立即停止旋转。 |
Use Gravity |
使用重力 | 该物体是否受重力影响,若激活,则物体受重力影响。 |
Is Kinematic |
是否是运动学 | 游戏对象是否遵循运动学物理定律,若激活,该物体不再受物理 引擎驱动,而只能通过变换来操作。适用于模拟运动的平台或 者模拟由铰链关节连接的刚体。 |
Interpolate |
插值 | 物体运动插值模式。当发现刚体运动时抖动,可以尝试下面的 选项:None(无),不应用插值;Interpolate (内插值),基于上一巾贞 变换来平滑本帧变换;Extrapolate (外插值),基于下一帧变换来 平滑本帧变换。 |
Collision Detection |
碰撞检测 | 碰撞检测模式。用于避免高速物体穿过其他物体却未触发碰 撞。碰撞模式包括Discrete (不连续)、Continuous (连续)、 Continuous Dynamic (动态连续〉3种。其中,Discrete模式 用来 检测与场景中其他碰撞器或其他物体的碰撞;Continuous模式 用来检测与动态碰撞器(刚体)的碰撞;Continuous Dynamic模式 用来检测与连续模式和连续动态模式的物体的碰撞,适用于 高速物体。 |
Constraints |
约束 | 对刚体运动的约束。其中,Freeze Position (冻结位置)表7TC刚体 在世界中沿所选HZ轴的移动将无效,Freeze Rotation (冻结 旋转)表示刚体在世界中沿所选的X 、Y 、Z 轴的旋转将无效。 |
数学计算
Ft = mv
数学表达式为:FΔt=mΔv
- Ft代表冲量
F是作用力,t是力的作用时间 - mv是动量
M是物体的质量,V是物体的运动速度.
API
常用API
注意:我们在代码中控制刚体的移动 最好是把刚体的运动代码写到FixedUpdate中
1 | ForceMode.Force; //默认方式 持续力 |
Unity手册-Rigidbody
https://docs.unity.cn/cn/2020.2/ScriptReference/Rigidbody.html
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Winward King's Blog!
评论