Unity物理引擎篇——刚体

simaoshid1 2018-06-22

我们在unity里面建了一个正方体cube , 要如何使这个cube可以跟现实中的物体一样受重力呢 ? 这就需要用到Rigidbody(刚体)组件了 .

单击cube , 在右边的Inspector面板添加Rigidbody组件

Unity物理引擎篇——刚体


请点击输入图片描述

添加完Rigidbody组件后,cube1就可以受重力影响了,运行unity时,cube1会因为受到重力往下落.

Unity物理引擎篇——刚体


请点击输入图片描述

下面为大家介绍 Rigidbody 组件常用参数 :

1. Mass : 物体的质量 . 官方建议物体质量***好不要大于其他物体的100倍或者小于其他物体的 1/100 ;

2. Drag : 空气阻力 . 数值越大,表示物体所受阻力越大,物体越难移动 ;

3. Angular Drag : 角阻力,也就是物体旋转受到的阻力 ,数值越大物体越难旋转 ;

4. Use Gravity : 是否开启重力 , 开启的话,游戏物体会受重力影响 ;

5. Is Kinematic : 是否开启动力学 . 如果开启的话 , 游戏物体将不再受物理引擎的影响 , 只能通过 Transform 来改变物体的位置,旋转等 ;

Unity物理引擎篇——刚体


请点击输入图片描述

如图 cube1(红色 , 勾选了 Is Kinematic ) , cube2 (绿色 , 没勾选 Is Kinematic ) 原本处于同一高度, 运行状态下 , cube2由于没有勾选 Is Kinematic 选项 , 受到重力影响会下落 ;

6. Interpolate : 插值 . 用来控制刚体运动的抖动情况 , 因为物理运算和画面更新不同步造成的. Interpolate是枚举类型 , 有以下三个选项 .

(1) . None : 没有插值

(2) . Interpolate : 内插值 . 基于前一帧的 Transform 来平滑此次的 Transform

(3) . Extrapolate : 外插值 . 基于下一帧的 Transform 来平滑此次的 Transform

Unity物理引擎篇——刚体


请点击输入图片描述

如图 cube1 (None) , cube2 (Interpolate) , cube3 (Extrapolate) .

游戏运行时 :

cube1 : 出现抖动 ;

cube2 : 平滑落下 , 但是比 cube1 后落地;

cube3 : 平滑落下 , 但和 cube1 同时落地;

由此可以看出 , Interpolate 和 Extrapolate 的区别就在于使用的算法不一样 , Extrapolate在物理上会比较准确 ;

7. Collision Detection : 碰撞检测 . 用于控制避免高速运动的物体穿过其他的物体而并没有发生碰撞 , 也是一个枚举类型 , 有以下三个选项

(1) . Discrete : 离散碰撞检测 . 与场景中其他所有的碰撞体进行碰撞检测 , 为默认值 ;

(2) . Continuous : 连续碰撞检测 . 适用于需要与连续动态碰撞检测的对象相碰撞的对象. 很耗费性能 ,一般不用 ;

(3) . Continuous Dynamic : 连续动态碰撞检测 . 适用于检测快速运动的游戏对象 ;

Unity物理引擎篇——刚体


请点击输入图片描述

如图 cube1 (Discrete) , cube2 (Continuous) , cube3 (Continuous Dynamic) 置于 1000米的高度 .

游戏运行时 :

cube1 : 高速下落 , 穿过地面 ;

cube2 : 落在地面静止 ;

cube3 : 落在地面静止 ;

由此看出 : cube1 在高速运动时已经完全穿透 , cube2防止穿透静态对象 , cube3 防止穿透包含 Continuous 和 Continuous Dynamic 选项的物体 .

8. Constraints : 约束 . 用来冻结物体 x ,y ,z 轴的移动和旋转 .

Unity物理引擎篇——刚体


请点击输入图片描述

(1) . Freeze Position : 冻结位置 . x , y , z 轴方向上 , 勾选状态的话 , 在该轴上的移动无效 ;

(2) . Freeze Rotation : 冻结旋转 . x , y , z 轴方向上 , 勾选状态的话 , 在该轴上的旋转无效 ;

好了 , 今天的刚体组件就介绍到这里 ,大家有什么问题可以在评论区留言 , 我会为大家解答 .

游戏物体添加了刚体组件以后 , 就可以模拟碰撞了吗 ? 答案是 No ... , 两个或多个游戏物体发生碰撞,只靠刚体是不够的 , 明天为大家带来另一个不可获取的组件详解 .


发表评论

发表评论:

17601037727 1280857492