U3L9-2——2D物理系统之碰撞器

碰撞器(2D)

碰撞器是用于在物理系统中 表示物体体积的的(形状或范围)
刚体通过得到碰撞器的范围信息进行计算
判断两个物体的范围是否接触
如果接触 刚体就会模拟力的效果产生速度和旋转

本章代码关键字

1
2
3
4
5
6
7
8
9
10
11
void OnCollisionEnter2D(Collision2D collision) { }    //碰撞触发接触时会自动执行这个函数(函数名,函数参数的类型不可以改动)
collision2D.collider //碰撞到的对象碰撞器的信息
collision2D.gameObject //碰撞对象的依附对象(GameObject)
collision2D.transform //碰撞对象的依附对象的位置信息
collision2D.contactCount //触碰点数相关
ContactPoint[] pos = collision2D.contacts //接触点 具体的坐标
void OnCollisionStay2D(Collision2D collision) { } //碰撞结束分离时会自动执行这个函数(函数名,函数参数的类型不可以改动)
void OnCollisionExit2D(Collision2D collision) { } //两个物体相互接触摩擦时 会不停调用该函数
void OnTriggerEnter2D(Collider2D other) { } //触发开始的函数 当第一次接触时 会自动调用
void OnTriggerExit2D(Collider2D other) { } //触发结束的函数 当接触的状态结束时 会调用一次
void OnTriggerStay2D(Collider2D other) { } //持续触发的函数 当两个对象持续触发(结合)时 会一直调用

2D碰撞器

圆形碰撞器

image

  • Material:一种物理材质,用于确定碰撞的属性,控制摩擦和弹性
  • Is Trigger:是否是触发器
  • Used By Effector:是否被附加的2D效应器使用
  • Offset:圆心偏移位置
  • Radius:圆形的半径

盒状碰撞器

image

  • Used by Composite:如果勾选,则该碰撞器将附加到2D复合碰撞器中使用
    勾选后,将消失一些属性,这些属性将在复合碰撞器中配置
  • Auto Tiling:如果精灵渲染器组件的Draw Mode设置为Tiled平铺模式,勾选该选项后,当改变精灵大小时将自动更新碰撞器的尺寸
  • Size:矩形的宽高
  • Edge Radius:使四个顶点为圆角

多边形碰撞器

image

  • Points:多边形顶点,虽然可以手动修改,
    但是一般情况下,我们通过数值编辑太复杂了
    因此都通过Edit Collider编辑,或者让Unity自动识别创建

边界碰撞器

image

  • 边界碰撞器的编辑主要还是通过Edit Collider
    一般不会手动去通过数值加点

胶囊碰撞器

image

  • Size:胶囊的宽高
  • Direction:是竖直胶囊还是水平胶囊

复合碰撞器

父对象挂载复合碰撞器可以组合多个子对象碰撞器,使用时必须要加上刚体

image

  • Geometry Type:几何学类型,
    合并碰撞体时,碰撞体顶点将组合为两种不同的几何体类型

    • Outlines:空心轮廓,类似边界碰撞器
    • Polygons:实心多边形,类似多边形碰撞器
  • Generation Type:生成类型,复合碰撞器在何时生成新几何体

    • Synchronous:对2D复合碰撞器或使用的其它碰撞器修改时,Unity立即生成新几何体
    • Manual:手动生成新几何体,通过代码生成或者点击下发的Regenerate Geometry生成按钮
  • Vertex Distance:从复合碰撞器收集顶点时允许的最小间距值

碰撞检测函数

碰撞检测函数和3D碰撞检测函数除了名字不同外其他基本一致
在这里只简单讲解不赘述
它是非常重要的知识点