一:添加组件
1、检视面板 AddComponent
2、菜单栏Component->physics
二:刚体变量
1、质量
2、阻力
3、旋转阻力
4、是否使用重力,打钩为使用
5、是否受到力的作用,打钩为不受作用
6、Interpolate 单独渲染刚体 差值算法 内差,外差 ,刚体为抖动的时候要差值,减少抖动,可为设置主角
7、Collision Detection 碰撞检测
1️⃣隔断时间不连续检测 在快速移动时,会直接穿过,没有碰撞,来不及检测
2️⃣连续检测
3️⃣动态连续检测 用于高速移动的物体,但是也不一定能检测到
但是由于都不能一直检测到,所以一般用射线检测,其他检测方法
8、Constranints 冻结,冻结某个方向,旋转方向。
比如,使用重力,但是冻结y方向,物体不会掉下来
冻结x轴,掉下来而是原来的状态,不会翻转下来
三:常用属性
1、速度
_rig.velocity =
new
Vector3
(
0
,
1
,
1
) *
15f
;
2、旋转速度
_rig.angularVelocity =
Vector3
.up *
10f
;
3、设置重心
rig.centerOfMass =
Vector3
.down;
4、设置穿透,不检测碰撞:
_rig.detectCollisions =
false
;
四:方法
1、施加力量
_rig.AddForce (
Vector3
.up *
200f
,
ForceMode
.Force);
2、旋转力
if
(
Input
.GetKeyDown (
KeyCode
.Q)) {
_rig.AddTorque (
Vector3
.up *
5f
,
ForceMode
.Impulse);
//旋转力
}
3、对物体的某个位置(相对自身)施加力
if
(
Input
.GetKeyDown (
KeyCode
.W)) {
_rig.AddForceAtPosition (
Vector3
.forward *
20f
,
new
Vector3
(
0.5f
,
0.5f
, -
0.5f
));
}
第二个参数是枚举类型ForceMode
力 ForceMode.Force: 按物体实际质量和实际的力的作用时间,给物体施加力 (默认)
冲动 ForceMode.Impulse: 实际质量,忽略力的作用(按1s),给物体施加力
加速度 ForceMode.Acceleration: 忽略质量(按1为单位),按实际力的作用时间,给物体施加力
速度变化 ForceMode.VelocityChange:忽略质量(按1为单位),忽略时间(按1s),给物体施加力
ForceMode的理解
作用时间理解:
Force: 执行一次,施加一帧时间(0.02s左右)的作用力
Impulse:执行一次,施加持续1秒的作用力