Unity-Physics

Unity-Physics

2D

Physics 2D Settings

用于设置一些全局属性,如重力大小,层与层之间的碰撞关系

image-20210629164215458

Rigidbody 2D

设置面板如下:

image-20210629164850404

  • Body Type:
    • Dynamic:受到力的影响
    • Kinematic:不会受到力的影响(包括重力),物体运动受代码控制
    • Static:永不移动,只会与动态刚体碰撞,除非设置useFullKinematicContacts,它将和Kinematic刚体碰撞
  • Material:物体的材质,可以设置弹性和摩擦属性
  • Simulated:如果取消勾选,则该物体不受力的影响,且不和其他物体产生接触
  • Use Auto Mass:是否根据碰撞器检测质量
  • Mass:物体的质量,这会影响物体的惯性、碰撞等
  • Linear Drag:运动阻力
  • Angular Drag:旋转阻力
  • Gravity Scale:重力对物体的影响
  • Collision Detection:碰撞检测
    • Discrete:离散检测,不适用于高速物体
    • Continuous:连续检测,适用于高速物体,但是会消耗性能
  • Sleep Mode:睡眠模式
    • Never Sleep:很消耗性能,尽量不要用
    • Start Awake:初始化时唤醒
    • Start Asleep:最初为睡眠状态(不受重力影响),被碰撞后才唤醒
  • Interpolate:是否在更新之间插值(一般用于移动不稳定的情况)
    • None:不插值
    • Interpolate:根据前一帧插值
    • Extrapolate:根据后一帧预估插值
  • Constraints:锁定方向或者旋转

Collider 2D

Circle Collider 2D

image-20210629223725787

  • Material:设置碰撞体的材质(Physics Material 2D),可以设置摩擦力和弹性系数
  • Is Trigger:是否为触发体,如果勾选,代表可以被穿过
  • Used By Effector:是否能够被Effector 2D使用
  • Offset:调整碰撞体的偏移位置
  • Radius:调整碰撞体的半径

Box Collider 2D

image-20210629224333684

大部分属性和Circle Collider 2D相同,但也有一些特殊的属性

polygon collider 2D

image-20210629224434929

多边形碰撞体,必须是闭合的图形

编辑:直接在多边形的边上点击以添加新的结点,按住ctrl后移动到边上会显示为红色,点击后合并红色的边

edge collider 2D

image-20210629224548908

可以不是闭合的,用作地形碰撞

编辑方法同上

Hinge Joint 2D

铰链接合组件,可用于制作活动门、铁链等需要旋转的物体,该组件必须配合Rigidbody 2D使用

image-20210630011020233

  • Enable Collision:勾选后,该游戏对象和连接的刚体之间会发生碰撞,否则能够穿过刚体
  • Connected Rigid Body:连接的刚体组件
  • Auto Configure Connected Anchor:自动设置锚点和连接锚点
  • Anchor:锚点,物体旋转的轴
  • Connected Anchor:连接锚点,如果物体锚点偏离了连接锚点,则物体会被瞬移回去,因此相当于一个固定点
  • Use Motor:使用驱动力,勾选后,可以设置驱动速度
    • Motor Speed:需要达到的最大驱动速度,正方向为顺时针
    • Maximum Motor Force:施加用于达到驱动速度的力,如果该值过小,则无法达到驱动速度
  • Use Limits:设置旋转的角度
    • Lower Angle:最小允许旋转角度
    • Upper Angle:最大允许旋转角度
  • Break Force:能够破坏铰链的力的大小
  • Break Torque:能够破坏铰链的力矩的大小

通过合理的设置上述属性,能够设计一些有趣的机关:

  • 弹簧木板:木板被碰撞打开后能够回到原来的位置,可以通过使用驱动力和限制角度实现
  • 锁链:为每个锁环设置Hinge Joint 2D组件,并连接上一个组件,最后利用Distance Joint 2D限制悬挂物体到支点的距离

详细步骤见:Hinge Joint 2D - Official Unity Tutorial - YouTube

Area Effector 2D

image-20210630102922401

  • Use Collider Mask:使用碰撞器蒙版
  • Force
    • Use Global Angle:力的方向相对于全局
    • Force Angle:力的方向,默认是相对自身(且不受物体绕y轴的影响),除非勾选Global Angle
    • Force Magnitude:力的大小
    • Force Variation:给力添加一个随机量,即最终的合力由Magnitude加上0到Variation之间的值
    • Force Target:
      • Rigidbody:受影响物体为刚体
      • Collider:受影响物体为碰撞体,且会旋转
    • Damping:
      • Drag:运动阻力大小,可以用来限制物体在其他方向的移动
      • Angular Drag:旋转阻力大小

Distance Joint 2D

image-20210701004104980

用于限制刚体和其连接刚体之间的距离

  • Enable Collision:勾选后,连接刚体和该物体之间可以碰撞
  • Connected Rigid Body:连接的刚体
  • Auto Configure Connected Anchor:勾选后,自动设置连接锚点的位置
  • Anchor:物体需要回归的位置
  • Connected Anchor:连接刚体的锚点
  • Auto Configure Distance:自动设置两个锚点之间的距离
  • Distance:两个锚点之间的距离
  • Max Distance Only:勾选后,物体可以移动到两个锚点之间的位置,否则只能做圆周运动
  • Break Force:能够破坏该组件的力

Point Effector 2D

image-20210701145313483

可以用于产生类似于爆炸或者磁铁的效果

  • Use Collider Mask:使用蒙版
  • Force:
    • Force Magnitude:力的大小,正方向指向力的源头
    • Force Variation:附加一个随机大小的力,最大值为设置的值
    • Distance Scale:产生效果的物理距离相对于实际距离的大小,只有Force Mode设置为非Constant只时才会生效,以线性模式举例,如果Scale为5,则计算力的大小时距离取实际距离的5倍
    • Force Source:力的来源
      • Collider:来源为Collider的中心点
      • Rigidbody:来源为质点
    • Force Target:力的目标
      • Collider:只有碰撞体受影响
      • Rigidbody:只有刚体受影响
    • Force Mode:力的模式(力关于距离的函数)
      • Constant:恒定力,不受距离影响
      • Inverse Linear:距离和力的大小呈线性相反关系
      • Inverse Squared:距离和力的大小呈平方相反关系
    • Drag:线性移动的阻力,可以防止物体移动越过中心点
    • Angular Drag:旋转阻力

3D


Unity-Physics
http://example.com/2023/01/10/Unity-Physics/
作者
Chen Shuwen
发布于
2023年1月10日
许可协议