一、刚体常用方法

1: AddForce 给刚体一个力,方向是世界坐标

    ForceMode 类型: t(即0.02s)

     f•t=m•v (force)   f•t=1.0•v (Acceleration) 

     f•1.0=m•v(Impulse)  f•1.0=1.0•v(VelocityChange)

2:AddForceAtPosition postion是世界体系坐标,确保坐标在物体内;

3: AddRelativeForce力方向 相对于物体坐标

4: MovePosition/MoveRotation 调整刚体到指定的位置/旋转

5: AddTorque/AddRelativeToque: 施加一个力矩(相对力矩);

6: 设置密度SetDensticy,体积是碰撞器体积;

7: Sleep: 强制刚体休眠; Wakeup 唤醒刚体;

8: SweepTest/SweepTestAll 扫描检测,返回射线碰撞到的刚体;

二、物理管理器

1:Gravity 重力,设置重力的大小和方向;

2: Default Material:为每个物体给一个默认的物理材质;

3: Bounce Threshold 反弹阈值,低于这个不进行反弹计算;

4: SleepThreshold 休眠阈值能量低于这个阈值休眠 E = (sqrt(v) + sqrt(A)) * 0.5

5: Default Contact offset默认接触偏差,低于该值认为刚体已经接触必须>0;

6: Solver Iteration Count关节和连接迭代次数;

7: Raycasts Hit Triggers 射线是否命中触发器, true检测命中, false忽略触发器;

8:Enable Adaptive Force 允许自适应力 修正模拟运动状态的数值偏差;

8: 碰撞矩阵,配置层级间的碰撞关系;

三、物理形状/碰撞器

1:Box Collider 盒子碰撞器;

2: Sphere Collider 球体碰撞器

3: Capsule Collider 胶囊碰撞器;

4: Mesh Collider  网格碰撞器;

5: Terrian Collider 地形碰撞器;

6: Wheel Collider车轮碰撞器;

四、物理材质

1:每种物体的弹力,摩擦力等物理参数可能不一样,unity使用物理材质来描述它们;

2: Dynamic Friction 滑动摩擦

3: Static Friction 静态摩擦

4: Bounciness 表面弹性;

5: Friction Combine 摩擦力的混合方式

6: Bounciness Combine 弹力的混合方式;

五、碰撞检测

1: OnCollisionEnter: 开始碰撞

2: OnCollisionExit: 碰撞离开

3: OnCollisionStay 碰撞持续

4: OnTriggerEnter: 开始碰撞到触发器

5: OnTriggerExit: 与触发器结束碰撞;

6: OnTriggerStay; 与触发器碰撞持续;

7: 配置物理管理器的 碰撞关系;

六、Physics属性

1: Physics.gravity: 物理世界重力加速度;

2: bounceThreshold: 是否反弹的阈值

3: sleepThreshold: 低于这个能量,物体休眠

4: queriesHitTriggers: 射线碰撞检测是否检测trigger;

5: solverIterationCount / solverVelocityIterationCount;

6: defaultContactOffset 默认接触的偏差;

5: IgnoreCollision(Collider collider1, Collider collider2, bool ignore)

      配置忽略碰撞器碰撞;

6: IgnoreLayerCollision(int layer1, int layer2, bool ignore)

     配置两个层的物体是否碰撞;

七、铰链关节

1: 将两个刚体束缚在一起,在两者之间产生铰链效果;

2: 铰链关节属性

    connect Body:目标连接的刚体;

    Anchor 本体锚点,连接目标旋转时围绕的中心点;

    Connect Anchor 连接目标的锚点,本体旋转时围绕的中心点;

    Axis 锚点和目标锚点的方向,指定了本体和连接目标的旋转方向;

    Auto Configure Connected Anchor: 勾选时,仅给出锚点的坐标,系统将自动计算出目标锚点坐标;

    Using Spring: 是否使用弹簧;

    Sprint 弹力;

    Damper: 阻尼,物体移动受到阻碍的大小,越大物体越慢;

    Target Postion: 目标位置,弹簧旋转的目标角度;

    Use Moto 使用电机,规定关节肿是否使用电机;

    TargetVelocity: 目标速率,对象试图达到的速度,会以此速度与目标速度进行加速和减速;

    Force 此属性是达到目标速率的力;

    Free Spine 规定了收控制对象的旋转是否会破坏,若启用,马达将永远不会破坏旋转,只会加速;

    Use Limits规定了关节在旋转的时候是否受限;

    Min 规定了刚体旋转的达到的最小角度

    Max 规定了刚体旋转的达到的最大角度

    Min Bonus 规定了刚体旋转的达到的最小弹跳值

    Max Bonus 规定了刚体旋转的达到的最小弹跳值

    Break Force 给出一个力的限值,当关节受到的力超过这个,关节损坏;

    Break Torque 给出一个力矩的极限,当关节受到力矩超过此值时关节损坏;

铰链关节的使用

1: 创建一个圆柱体与一个立方体;

2: 调整他们的大小类是与门的形状;

3: 分别添加刚体组件;

4: 为圆柱体创建一个铰链关节(Hinge Joint)

5: 冻结圆柱体的位置和旋转;

6: 给立方体一个冲量;

八、固定关节

1: 将两个刚体束缚在一起, 相对位置保持不变,永远不会变化;

2: 固定关节属性

    connect Body:目标连接的刚体;

    Break Force 给出一个力的限值,当关节受到的力超过这个,关节损坏;

    Break Torque 给出一个力矩的极限,当关节受到力矩超过此值时关节损坏;

    Enable collision 允许碰撞检测;

    Enable Preprocess 允许进行预处理;

固定关节使用

1:创建2个球体,分别对2个球体加上刚体组件;

2: 在其中一个球体里面加入固定关节(Fixed Joint),并关联好另外的刚体;

3: 给其中一个刚体一个冲量

九、弹簧关节

1: 将两个刚体束缚在一起, 相对位置保持不变,永远不会变化;

2: 弹簧关节属性

    connect Body:目标连接的刚体;

    Anchor 本体锚点,连接目标旋转时围绕的中心点;

    Connect Anchor 连接目标的锚点,本体选择时围绕的中心点;

    Axis 锚点和目标锚点的方向,指定了本体和连接目标的旋转方向;

    Auto Configure Connected Anchor: 勾选时,仅给出锚点的坐标,系统将自动计算出目标锚点坐标;

    Sprint 弹力;

    Damper: 阻尼,物体移动受到阻碍的大小,越大物体越慢;

    Min distance  弹簧两端最小距离

    Max  distance  弹簧两端最大距离

    Break Force 给出一个力的限值,当关节受到的力超过这个,关节损坏;

    Break Torque 给出一个力矩的极限,当关节受到力矩超过此值时关节损坏;

   Enable collision 允许碰撞检测;

    Enable Preprocess 允许进行预处理;

弹簧关节使用

1:创建1个立方体(墙)和1个球体,分别对2个物体加上刚体组件;

2: 在其中一个球体里面加入弹簧关节(Spring Joint),并关联好另外的刚体;

3: 给球体一个力;

十、角色关节

1: 应用广泛的基本关节,角色关节配合Ragdoll使用,是一个扩展的球窝关节;

2: 角色关节属性

    connect Body:目标连接的刚体;

    Anchor 本体锚点,连接目标旋转时围绕的中心点;

    Connect Anchor 关节的扭轴, 以橙色的gizmo圆锥表示;

    Axis 锚点和目标锚点的方向,指定了本体和连接目标的旋转方向;

    Auto Configure Connected Anchor: 勾选时,仅给出锚点的坐标,系统将自动计算出目标锚点坐标;

    Twist Limit Spring: 扭曲弹簧限制,为关键制定弹簧限制;

    Low/Hight Twlist Limit 扭轴下/上限,关节扭度不可超过此范围;

    Swing 1/2 Limit 摆轴旋转限制1/2, 用绿/橙轴表示,设置为30 [-30, 30];

    Limit 限制角度

    Bounciness 对应限制中的反弹系数

    Contact Distance: 对应限制中的接触距离

    Enable Projection: 进行违反物理定律的关节投射;

    Projection Distance/Angle:关节投射的距离/角度

    Sprint 弹力;

    Damper: 阻尼,物体移动受到阻碍的大小,越大物体越慢;

    Target Postion: 目标位置,弹簧旋转的目标角度;

    Use Moto 使用电机,规定关节肿是否使用电机;

    TargetVelocity: 目标速率,对象试图达到的速度,会以此速度与目标速度进行加速和减速;

    Force 此属性是达到目标速率的力;

    Free Spine 规定了收控制对象的旋转是否会破坏,若启用,马达将永远不会破坏旋转,只会加速;

    Use Limits规定了关节在旋转的时候是否受限;

    Break Force 给出一个力的限值,当关节受到的力超过这个,关节损坏;

    Break Torque 给出一个力矩的极限,当关节受到力矩超过此值时关节损坏;

角色关节使用

1:创建2个球体,分别对2个球体加上刚体组件;

2: 在其中一个球体里面加入角色关节(Character Joint),并关联好另外的刚体;

十一、蒙皮网格和布料

1: 例如要模拟衣服,随风摆动,模拟布料需要用到蒙皮网格和布料;

2: 蒙皮网格可以模拟出非常柔软的网格体,用于布料和角色的蒙皮功能;

3: 蒙皮网格 + 布料组件能模拟出布料效果;

4: Skinned Mesh Renderer是一种网格渲染器,是一种渲染网格的方式;

5: 布料是Cloth组件;

蒙皮网格

1: 蒙皮网格的重要属性:

    Cast Shadows: 投影方式 包括: off, 单向(on), 双向(Two sided), 仅阴影;

    Receive Shandows: 是否接受其他的对象对他进行投影;

    Materias 对该对象制定材质;

    UseLight Probes: 是否使用灯光探头;

    Reflection Probes: 是否使用反射探头;

    Anchor Override: 网格锚点,网格对象跟随锚点移动并进行物理模拟;

    Lightmap Parameters: 光照烘培参数,指定使用光照的配置文件;

    Quality: 影响任意一个顶点的骨头数量;

    Update When OffScreen: 屏幕之外的部分是否进行物理模拟;

    Mesh: 该渲染器制定的网格对象;

    Root Bonus: 根骨头;

    Bounds(Center)包围和中心坐标,不可修改,基于网格坐标系;

    Bounds(Extends): 包围盒三个方向的长度,不可修改;

布料

1: 布料的重要属性:

    Strectching Stiffiness: 布料的韧度,(0, 1],表示可拉升的程度;

    Bending Stiffiness: 布料的硬度(0, 1],表示布料可弯曲的程度;

    Use Tetchers: 是否对布料进行约束;

    Use Gravity: 是否使用重力;

    Damping:布料运动的阻尼系数;

    External Acceleration:外部加速度,给布料一个常力,模拟微风飘起的旗帜;

    Random Acceleration: 随机加速度,给布料一个变力,模拟强风鼓动的旗帜;

    World Velocity/Acceleration Scale: 世界坐标系下速度加速度缩放比例;

    Friction: 布料相对与角色的摩擦力;

    Collision Mass scale: 粒子碰撞时质量的增加;

    Using continuous Collision:是否连续碰撞;

    Use Virtual Particles: 为每一个三角形附加一个虚拟粒子,提高碰撞的稳定性;

    Solver Frequency: 计算频率,每秒计算的次数;

    Sleep Threshold: 休眠阈值;

    Capsule Collders: 可与布料产生碰撞的胶囊碰撞器个数;

   Sphere Colliders: 可与布料产生碰撞的球行碰撞器个数;

    first/Secode: 两个球连接组成的胶囊碰撞器;