Unity3D学习笔记之Rigidbody(刚体组件)
Rigidbody面板各属性:
-
Mass(质量):单位kg
-
Drag(阻力)
-
Angular Drag(角阻力)
-
Use Gravity(开启重力)
-
Is Kinematic(开启动力学模式):开启之后将不在受物理引擎的影响而只能通过Transform属性来操作,这个选项适用于模拟平台的移动或带有铰链关节连接刚体的动画。
-
Interpolate(插值):
None:没有插值。
Interpolate:内插值,基于前一帧的Transform来平滑的此次的Transform。
Extrapolate:外插值,基于后一帧的Transform来平滑的此次的Transform。
-
Collision Detection(碰撞检测模式):
Discrete:默认选项,检测场景中其他所有碰撞体进行碰撞检测。
Continuous:连续碰撞检测。此模式适用于那些需要与采用了连续动态碰撞检测的对象相碰撞的对象。
Continuous Dynamic:连续动态检测模式。
-
Constraints(束缚):
Freeze Position(位置冻结)
Freeze Rotation(角度冻结)
脚本中控制刚体的常用方法:
-
AddForce:添加一个力到刚体,使刚体开始移动
-
AddForceAtPosition:施加在某一个点上的力,这将可能在物体上施加扭矩力
-
Addtorque:为刚体增加一个扭矩
-
IsSleeping:判断刚体是否被休眠
-
MovePosition:移动刚体到某个位置
-
MoveRotation:使刚体旋转到某个位置
-
Sleep:使刚体至少休眠一帧
-
WakeUp:使刚体终止休眠
-
GetPointVelocity:获取刚体的绝对速度
-
GetRelativePointVelocity:获取刚体相对于某点的速度
-
ResetInertiaTensor:重置惯性张量和旋转
刚体物理学知识补充:
-
刚体:指在运动中和受力作用后,形状和大小不变,而且内部各点的相对位置不变的物体。
-
惯性张量:描述刚体绕点旋转的惯性大小
-
转动惯量:描述刚体绕轴旋转的惯性大小
-
惯性张量与转动惯量的关系:
对于三维空间中任意一参考点 K与以此参考点为原点的直角坐标系的惯性张量I可以表示为下面的3X3的矩阵
这里,矩阵的对角元素 Ixx、Iyy、Izz分别为对于 x-轴、y-轴、z-轴的转动惯量
注意事项:
-
操作一个物体可以操作其刚体或者Transform属性,两者选其一即可;
-
使用物理系统时可以通过在游戏对象的刚体上添加AddForce()或者AddTorque()函数达到通过脚本来添加作用力或扭矩力,来对刚体进行控制;
-
使用刚体组件也要同时使用碰撞器组件;
-
父子对象不应该同时具有刚体;
-
不应该缩放刚体的父级。
-
运动学刚体不受力、碰撞或关节控制,完全由动画或代码(控制Transform属性)驱动,但运动学刚体可以通过碰撞或关节影响其他刚体的运动。非运动学刚体则受力、碰撞或关节控制。