是
Rigidboby刚体
rigidboby刚体,组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力用来保证游戏对象像是在真实世界中那样进行运动,任何游戏对象只有添加了刚体组件才受到重力影响,同步脚本为游戏对象添加的作用力以及通过NVIDIA物理引擎与其他的游戏对象发生互动的运算都需要游戏对象添加了刚体组件。
使用
1.启动unity应用程序,创建一个游戏对象,选中该对象,依次打开菜单栏中component->physic->rigidboby,选项,这样就在游戏对象上添加了刚体组件。
2.rigidboby刚体组件属性面板参数
mass:质量,用于设置游戏对象质量,建议在同一个游戏场景中,游戏对象之间的质量差值不要大于100倍
drag:阻力,当对象受力运动时收到的空气阻力,0表示没有空气阻力,阻力极大时游戏对象会立刻停止运动
angular drag:角阻力,当对象受扭矩力旋转时受到的空气阻力,0表示没有空气阻力,阻力极大时游戏对象会立刻停止运动
use gravity:使用重力,若开启此项,游戏对象受到重力的影响。
is kinematic:是否开启动力学,若开启此项,游戏对象不在受到物理引擎的影响的从而只能通过transform(几何变换组件)属性来对其操作,该方式使用于模拟品平台的移动或带有铰链关节连接刚体的动画。
interpolate:差值,该项用于控制刚体运动抖动情况,有3种选择
none:没有差值
interpolate:内差值,基于前一帧的transform来平滑次数的transform
extrapolate:外差值,基于下一帧的transform来平滑次数的transform
collision detetion:碰撞检测,该属性用于控制避免高速运行的游戏对象穿过其他的对象而未发生碰撞。有3种选择
discrete:离散碰撞检测,该模式与场景中其他的所有碰撞体进行碰撞检测,该项为默认值
continuous:连续碰撞检测,该项用于检测与动态碰撞体(带有的rigidboby)的碰撞,其他的刚体会采用离散体碰撞模式,从模式使用于那些需要与采用连续动态碰撞检测的对象相碰撞的对象。这对物理性能有很大的影响,如果不需要对快速运动的对象进行碰撞检测,就使用离散碰撞检测模式。
coninuous dynamic:连续动态碰撞检测模式,该模式用于检测与采用连续碰撞模式或连续碰撞模式对象的碰撞,也可用于检测没有rigidboby的静态网格碰撞体,用于与之碰撞的其他对象可采用离散碰撞检测,动态连续碰撞检测模式也可用于检测快速运动的游戏对象。
constrains:约束,该项用于控制对于刚体运动的约束
Freeze Position:冻结位置,刚体对象在世界坐标系中的x,y,z轴方向上(勾选状态),的移动将无效
Freeze rotation:冻结旋转,刚体对象在世界坐标系中的x,y,z,轴方法上(勾选状态),的旋转将无效
注意:
1.parenting 父子级
当一个游戏对象受物理系统控制时,它会以半独立的方式随着父对象的位移而运动,如果任何父对象有所运动的话,这些父对象会推着子对象的刚体跟随他们一起移动,不过这些刚体由于受重力影响的原因还是会下降而且对于碰撞事件也是会有所相应的
2.scripting 脚本
可通过在有序对象的刚体上添加Addforce()和Addtorque()函数,达到通过脚本来添加作用力或扭矩力,来对刚体进行控制,要注意的是,在使用物理系统时,不要直接改变对象的transform组件的属性。
3.animation 动画
有些情况下,如需要创建布娃娃效果的时候,需要在动画和物理系统间切换对象的控制权,因此当刚体被标记为动力学模式时,就不会受到如碰撞,作用力或其他物理效果的影响。这就意味着需要直接操作的transform组件属性来控制该对象了,动力学刚体会影响到其他的对象,但其自身并不受到物理系统的影响,如果,那些绑定到动力学对象上的关节会约束其他绑定到该对象上的刚体,动力学刚体在碰撞体时会影响其他的刚体