【Unity】入门学习笔记180522——API(12)——Rigidbody类——实例属性

Rigidbody类

模拟GameObject对象在现实世界中的物理特性

对Rigidbody对象属性的赋值代码通常放在脚本的OnFixedUpdate()方法中


A、Rigidbody类实例属性

1、collisionDetectionMode

public CollisionDetectionMode collisionDetectionMode{ get; set; }

此属性用于设置刚体的碰撞检测模式,共有3种枚举类型值:

①Discrete:静态离散检测模式,为系统默认设置。此模式下,只有在某一帧中两物体的碰撞器发生重叠时才能被检测到,这样就有可能导致某物体的前一帧在另一刚体的上方,而下一帧移动到了另一个刚体的下方,发生穿越现象。

②Continuous:静态连续检测模式,一般用在高速运动物体的目标碰撞体上,防止被穿越,检测强度比Discreet强。

③ContinuousDynamic:最强的连续动态检测模式,一般用在两个高速运动的物体上,防止互相穿越。计算消耗最大,一般情况下慎用。

无论采取哪种模式,为了防止穿越现象的发生,除了设置其碰撞检测模式外,还要适当增加两物体碰撞器的厚度,一般不要小于0.1,同时尽量降低两物体碰撞时的相对速度。


2、drag

public float drag{get; set; };

用于给刚体添加一个阻力,drag值越大刚体速度减慢的越快


3、inertiaTensor

rigidbody inertiaTensor=new Vector3(5.0f, 10.0f, 1.0f);

用于设置刚体的惯性张量。在距离重心同等的条件下,刚体会向张量值大的一边倾斜


4、mass

public float mass{ get; set; }

设置或返回刚体的质量。一般刚体质量取值在0.1附近模拟最佳,最大不要超过10,否则容易出现模拟不稳定的情况。

对于自由落体运动,物体的速度只与重力加速度Gravity和空气阻力drag有关,与质量mass无关

mass的主要作用是在物体发生碰撞时计算碰撞后物体的速度。当一个物体分别去撞击mass大的物体和mass小的物体时,根据动量守恒定律,较重的物体被撞后的速度要慢于较轻的物体。


5、velocity

public Vector3 velocity{ get; set; }

用于设置或返回刚体的速度值,

在脚本中无论是给刚体赋予一个Vector3类型的速度向量v,还是获取当前刚体的速度v,v的方向都是相对世界坐标系而言的。

velocity的单位是米每秒,而不是帧每秒。

猜你喜欢

转载自blog.csdn.net/dylan_day/article/details/80404881
今日推荐