物理系统(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
🔚