刚体组件 Rigidbody
目前正跟随官网 Junior Programmer 课程学习。
前一段时间学习到的一些内容,将分别纪要。
1.刚体
简单整理刚体相关的属性和方法;
1.1描述
继承自 Component ,通过物理模拟控制对象的位置。
向对象添加 Rigidbody 组件后,其运动将受到 Unity 物理引擎的控制。即使不添加任何代码,Rigidbody 对象也受到向下的重力,并在与其他对象碰撞时作出反应(如果也存在适当的 Collider 组件)。
Rigidbody 还有一个脚本 API,让您能够向对象施加力,并以逼真的物理效果对其进行控制。例如,可以根据车轮施加的力来指定汽车的行为。根据这些信息,物理引擎可以处理汽车运动的大多数其他方面,因此汽车可进行逼真的加速并适当地响应碰撞。
在脚本中,建议使用 FixedUpdate 函数来施加力和更改 Rigidbody 设置(而不是使用 Update,Update 用于大多数其他帧更新任务)。这样做的原因是物理更新在测量的时间步骤中执行,而时间步骤与帧更新不一致。FixedUpdate 在每次进行物理更新前调用,因此在该函数中做出的任何更改都将直接处理。
2.刚体的变量
刚体的属性非常复杂。一次说完会让人无所适从。
在 Junior Programmer 教程中我们用到的属性包括:
| 变量 | 说明 |
|---|---|
| mass | 刚体的质量。 |
| position | 刚体的位置。 |
| rotation | 刚体的旋转。 |
| useGravity | 控制重力是否影响该刚体。 |
| velocity | 刚体的速度矢量。它表示刚体位置的变化率。 |
以上。
补充说明下,我们用过 Physics.gravity 来调整重力加速度,而这个属性属于 Physics 而非 Rigidbody 。
3.刚体的公共函数
比较常用的(我自己猜测)的公共函数包括:
| 公共函数 | 说明 |
|---|---|
| AddExplosionForce | 向模拟爆炸效果的刚体施加力。 |
| AddForce | 向 Rigidbody 添加力。 |
| AddForceAtPosition | 在 position 处施加 /force/。这将向对象施加扭矩和力。 |
| AddRelativeForce | 向刚体添加力(相对于其坐标系)。 |
| MovePosition | 将运动 Rigidbody 向 position 移动。 |
| MoveRotation | 将刚体旋转到 /rotation/。 |
实际上我们目前只用过 AddForce 方法;
以上。
4.消息
刚体的消息只有3个:
| 消息 | 说明 |
|---|---|
| OnCollisionEnter | 当该碰撞体/刚体已开始接触另一个刚体/碰撞体时,调用 OnCollisionEnter。 |
| OnCollisionExit | 当该碰撞体/刚体已停止接触另一个刚体/碰撞体时,调用 OnCollisionExit。 |
| OnCollisionStay | 对应正在接触刚体/碰撞体的每一个碰撞体/刚体,每帧调用一次 OnCollisionStay。 |
我们用过的是 OnCollisionEnter ,即在触发碰撞的瞬间调用的方法;
以上。
注
上述大部分内容来源于 Unity Document,大量删减;
详细了解可参考以下路径:
以上。