一、刚体常用方法
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: 两个球连接组成的胶囊碰撞器;