Rigidbody类的功能是用来模拟GameObject对象在现实世界中的物体特性,包括重力、阻力、质量、速度等
Rigidbody类实例属性
在Rigidbody类中,涉及的实例属性有collisionDetectionMode、drag、inertiaTensor、mass和velocity。
collisionDetectionMode属性:碰撞检测模式
基本语法
public CollisionDetectionMode collisionDetectionMode{
get; set; }
功能说明
此属性用于设置刚体的碰撞检测模式。刚体的碰撞检测模式有三种,即枚举类型CollisionDetectionMode
功能说明
1、Discrete :静态离散检测模式,为系统的默认设置。在此模式下,只有在某一帧中两物体的碰撞器发生重叠时才能被检测到,这样就有可能导致某物体的前一帧在另一个刚体的上方,而下一帧移动到了另一个刚体的下方,这样就会发生穿越现象。
2、Continuous:静态连续检测模式,一般用在高速运动刚体的目标碰撞体上,防止被穿越,检测强度比Discreet强。
总之,无论哪种检测模式都有可能被穿越,为了防止穿越现象的发生,除了设置其碰撞检测模式外,还要适当增加两物体碰撞器的厚度,一般不要小于0.1,,同时尽量降低两物体碰撞时的相对速度。
drag属性:刚体阻力
基本语法
public float drag {
get; set; }
功能说明
此属性用于给刚体添加一个阻力。drag值越大刚体速度减慢得越快,当drag>0时,刚体在增加到一定速度后会均速移动
注意:刚体在自由落体运动中的最大速度值只与Gravity和drag值有关,与质量Mass无关。
inertiaTensor属性:惯性张量
功能说明
此属性用于设置刚体的惯性张量。在距离重心同等的条件下,刚体会向张量值大的一遍倾斜。
msaa属性:刚体质量
基本语法
public float mass{
get; set;}
功能说明
此属性用于设置或返回刚体的质量。一般刚体质量取值在0.1附近模拟最佳,最大不要超过10,否则容易出现模拟不稳定的情况
mass的主要作用是在物体发生碰撞时计算碰撞后物体的速度。当一个物体分别去撞击mass大的物体和mass小的物体时,根据动量守恒定律,较重的物体被撞后的速度要慢于较轻的物体
velocity属性:刚体速度
基本语法
public Vector3 velocity{
get; set; }
功能说明
此属性用于设置或返回刚体的速度值
1、在脚本中无论是给刚体赋予一个Vector3类型的速度向量v,还是获取当前刚体的速度v,v的方向都是相对世界坐标系而言的。
2、velocity的单位是米每秒,而不是帧每秒,其中米是Unity中默认的长度单位。
Rigidbody类实例
在Rigidbody类中涉及的实例方法:AddExplosionForce方法、AddForceAtPosition方法、AddToque方法、ClosestPointOnBounds方法、GetPointVelocity方法、MovePosition方法、Sleep方法、SweepTest方法、SweepTestAll方法和WakeUp方法。
AddExplosionForce方法:模拟爆炸力
基本语法