【 untiy3d 】物理引擎初级

一:添加组件
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秒的作用力


猜你喜欢

转载自blog.csdn.net/liaoshengg/article/details/80762124
今日推荐