Unity初识Rigidbody2D

Ridigbody2D:用于2D精灵刚体物理组件。

精灵:2D图形对象,本质是标准图形纹理。

刚体:使对象的行为方式受物理控制,接受力和扭矩行为方式基于施加的作用力。

Rigidbody2D组件的检查器inspector在设置不同身体类型时显示如下:


身体类型

  Dynamic(动态):具有可用的全套属性,如质量和阻力,并受重力和作用力影响;是2D刚体的默认类型;最具互动性,性能成本最高。

  Kinematic(运动学):仅在用户控制(脚本)下进行移动,不受重力和作用力影响只与Dynamic刚体碰撞;速度快;系统资源需求低;

  静态的(Static):顾名思义,不是为了移动而设计的,简单理解为无限质量,不可撼动;只能与Dynamic刚体碰撞。

实例对比如下,白色图形都添加了碰撞体和刚体组件。

其中:三角形为静态碰撞体,表现为“悬浮”空中,即使被圆形碰撞,自身也没有移动。

圆形为Dynamic碰撞体,表现为具有质量而受重力落到地面,并与所有碰撞体发生碰撞。

正方形为Kinematic碰撞体,为我自己通过脚本移动,表现为不受重力影响,不与属于静态碰撞体的三角形碰撞,与Dynamic类型的圆形发生碰撞。


材质:刚体的物理材质两个参数是摩擦力弹力

  物理材质优先级:Collider2D>RigidBody2D>全局物理材质

  实例如下:在项目中创建一个物理材质及其检查器inspector如下:

将材质挂在圆形的刚体物理材质上,为便于比较设置弹力为4

此时再次运行前面的实例,效果如下:

弹力太大圆形直接弹飞可见使用的材质有了效果。


模拟的

默认为勾选状态,取消勾选则不会发生物理仿真效果。

模拟包括:运动、Collider2D的碰撞、Joint2D的约束效果、是否驻留在内存。

更改此属性在内存和处理上,都比直接启用/禁用Collider2D组件和Joint2D组件更有效率。

实例如下:圆下方的三角形取消了勾选状态,不再模拟所以圆直接穿了过去。


④ 自动质量:2D刚体从对撞中检查物体质量。

 质量:即2D刚体的质量;自动质量和质量互斥。

 线性阻尼和角阻力:即线性阻力和角度阻力,分别影响位置和旋转运动的阻力系数。

 重力大小:即物体受重力的程度。


⑤ 碰撞检测

离散(Discrete):可以理解为是断续地更新,比如物体A在当前帧在B的左边,下一帧运动到B的右边,在两帧之间没有发生物理更新,便不        会检测出碰撞。尤其是物体高速运动,不适用于这种检测模式

持续(Continuous):连续检测,移动即检测,可以防止上文离散模式的情况,防止对象穿过所有静态的碰撞体。当然,需要更多的机器性能。


休眠模式

在休眠模式下,Unity会把处于静止状态的物理模拟去除,这样处理可以节省计算资源。

从不休眠:顾名思义,从不进入休眠模式,此模式下消耗的系统资源多。

开始唤醒:游戏开始时处于该模式下的物体是非休眠状态。

开始休眠:游戏开始时处于该模式下的物体处于休眠状态。

举例如下:两个Dynamic碰撞体类型的三角形,左边的设为开始休眠状态,右边设为开始唤醒状态。

运行实例后表现为:“开始休眠”模式的三角形在开始时被Unity去除了物理模拟,最基本的表现是没有质量而没有掉下去。

“开始唤醒”状态的三角形开始的时候便落了下来。


插值:在更新之间使用的物理插值。

如果图形更新比物理更新频繁的多,那么视觉上看对象运动起来可能是“断断续续”而不平滑流畅,此时打开插值选项就会很有用。

插值模式:根据上一帧与当前帧的位置对运动进行平滑处理。

外推模式:对下一帧的估计位置来对运动进行平滑处理。


⑧ Constraints(限制)

顾名思义,冻结X则对象无法延X方向移动,Y同理;

冻结旋转的一个用途是用于2D精灵使其移动时不会发生旋转

实例如下:两个类型为Dynamic碰撞体的三角形,左不作限制,右冻结旋转。


⑨Info:用于显示当前设置的信息状态。

Position:位置

Roration:旋转

Velocity:速度

Angular Velocity:角速度

Inertia:惯性

Local Center of Mass:局部质心

World Center of Mass:世界质心

Sleep State:睡眠状态

第一次写博客,如有错误和建议欢迎补充,指正和交流。

猜你喜欢

转载自blog.csdn.net/qq_37219159/article/details/128727214