Unity入门计划基本概念-2D碰撞体Collider 2D

Posted 九九345

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity入门计划基本概念-2D碰撞体Collider 2D相关的知识,希望对你有一定的参考价值。

目录

官方帮助手册

我用的Unity版本

2D碰撞体的作用

2D碰撞体的类型

Box Collider 2D 盒型碰撞体

1 Edit Collider 编辑边框

2 Material 材质

3 Is Trigger 触发器开关

4  Used By Effector 效应器开关

5 Used By Composite 混合开关

6 Auto Tiling 自动适应瓦片平铺

7 Offset 偏移调整

8 Size 边界调整

9 Edge Radius 棱角半径

Circle Collider 2D 圆形碰撞体

1 Edit Collider 编辑边框

6 Raidus 半径

其余属性跟Box Collider 2D相同

Edge Collider 2D 边缘碰撞体

1 Edit Collider 编辑边框

7 Points 点信息

其余属性跟Box Collider 2D相同

Polygon Collider 2D 多边形碰撞体

1 Edit Collider 编辑边框

其余属性跟Box Collider 2D相同

Capsule Collider 2D 胶囊碰撞体

Composite Collider 2D 复合碰撞体

5 Geometry Type 几何类型

6 Generation Type 发生变化时的几何形状

7 Vertex Distance 顶点距离限值

8 Offset Distance 偏移距离限值

其余属性跟Box Collider 2D相同

Custom Collider 2D 自定义碰撞体        

Tilemap Collider 2D 瓦片地图碰撞体


官方帮助手册

2D 碰撞体 - Unity 手册

我用的Unity版本

2021.3 

2D碰撞体的作用

  • 2D碰撞体对应的是2D的游戏对象,不能将3D和2D混用;
  • 这个组件可以定义物理碰撞的2D游戏对象的形状;
  • 形状不需要与游戏对象完全相同,粗略近似的方法在游戏运行中更有效。

2D碰撞体的类型

通过搜索可以看到,1D碰撞体都有以下8种类型。

Box Collider 2D 盒型碰撞体

它就是一个矩形的碰撞盒。

1 Edit Collider 编辑边框

可以在Scene视图中调整碰撞体的边框,边框是个矩形box。

2 Material 材质

关联材质,默认是一个2D物理材质Physics Material 2D,用来调整2D物理对象碰撞时这些对象之间的摩擦弹性。

Assets -> create -> 2D -> Physics Material 2D就可以新建一个Physics Material 2D,默认的摩擦系数Friction -> 0.4,弹性Bounciness -> 0.

3 Is Trigger 触发器开关

选中后,这个2D碰撞体会作为触发器运行,那么什么叫触发器?可以看看我的另一篇文章:Unity学习-触发器 Trigger_flashinggg的博客

4  Used By Effector 效应器开关

如果该碰撞体使用Effectors 2D——2D效应器,需要勾选这个选项使碰撞效应生效。可以发现这里提到的2D效应器组件是需要和2D碰撞体结合使用的,关于效应器可以先看看这篇文章:【Unity】Unity 2D游戏开发(二)Effectors 2D碰撞效应器

5 Used By Composite 混合开关

如果该碰撞体使用Composite Collider 2D——2D复合碰撞体,勾选这个选项之后碰撞体的其他属性会被忽略,把复合碰撞体的属性作为该碰撞体的属性。

2D 复合碰撞体 (Composite Collider 2D) - Unity 手册

6 Auto Tiling 自动适应瓦片平铺

精灵渲染器(Sprite Renderer)的Draw Mode设置为Tiled时,勾选Auto Tiling可以自动适应Sprite的平铺。

关于精灵渲染器可以先看看官方的文档,精灵渲染器 (Sprite Renderer) - Unity 手册,后续我会在进行学习。

7 Offset 偏移调整

和Size一起,用于调整碰撞体的位置。

8 Size 边界调整

和Offset一起,用于调整碰撞体的位置。

9 Edge Radius 棱角半径

控制边缘周围的半径,是顶点为圆形。(目前不太清楚这个参数对于Box Collider的影响)

Circle Collider 2D 圆形碰撞体

1 Edit Collider 编辑边框

可以在Scene视图中调整碰撞体的边框,边框是个圆形。

6 Raidus 半径

改变碰撞体尺寸。

其余属性跟Box Collider 2D相同

Edge Collider 2D 边缘碰撞体

1 Edit Collider 编辑边框

可以在Scene视图中调整碰撞体的边框,自己框出轮廓,这个轮廓无需完全包围一个区域,可以是直线也可以是L形。

7 Points 点信息

轮廓点的一些信息。

其余属性跟Box Collider 2D相同

Polygon Collider 2D 多边形碰撞体

1 Edit Collider 编辑边框

可以在Scene视图中调整碰撞体的边框,边框初始是自动根据轮廓贴合的,可以自己修改。与Edge Collider不同的是,这个多边形碰撞体的边缘必须完全包围一个区域。

其余属性跟Box Collider 2D相同

Capsule Collider 2D 胶囊碰撞体

胶囊碰撞体是由两个半球体与一个圆柱体相连构成的,就跟胶囊的样子差不多,适用于柱状物。

胶囊碰撞体(CapsuleCollider) - Sun‘刺眼的博客 - 博客园 (cnblogs.com)

Composite Collider 2D 复合碰撞体

2D 复合碰撞体 (Composite Collider 2D) - Unity 手册

这个碰撞体没有固定的形状,在上述的盒型碰撞体Box Collider和多边形碰撞体Poly Collider都有一个属性——Used By Composite,选这个选项后,2D复合碰撞体将合并他们的形状。 

5 Geometry Type 几何类型

合并后,所选碰撞体的顶点组合成两种不同的几何类型:

  • Outlines——空心轮廓,类似Edge Collider 2D
  • Polygons——实行多边形,类似Polygon Collider 2D

6 Generation Type 发生变化时的几何形状

(这部分不是很明白可以用来干什么,先记录下来吧。)

  • Synchronous——立即自动生成新的集合体
  • Manual——手动

7 Vertex Distance 顶点距离限值

设置一个值,用以规范从碰撞器中收集的任何顶点所允许的最小间距,可以用来控制定点组合的有效分辨率。

8 Offset Distance 偏移距离限值

类似于Vertex Distance

其余属性跟Box Collider 2D相同

Custom Collider 2D 自定义碰撞体        

需要用到PhysicalShape2D以实现自定义,具体看:

Custom Collider 2D - Unity 手册

Tilemap Collider 2D 瓦片地图碰撞体

为同一个游戏对象上的Tilemap组件的每一个瓦片生成碰撞体,当创建一个Tilemap Collider 2D时,会自动创建一个Tilemap组件:

关于该组件的优化:unity2d Tilemap Collider优化 - 知乎 (zhihu.com)

以及该组件的介绍:瓦片地图 2D 碰撞体 (Tilemap Collider 2D) - Unity 手册

Unity入门计划基本概念-预制件 Prefab

目录

官方文档 

相关教程 

我的Unity版本

1 预制件的作用

2 预制件的定义

3 预制件的优点

4 一般使用的场景

5 预制件的创建&使用

5.1 创建

5.2 使用

6 预制件的编辑

6.1 更改预制件本身

6.2 更改实例对象

6.3 实例属性优先于预制件

7 预制件变体 Prefab Variant

7.1 预制件特点

7.2 预制件的创建

8 预制件unpack成对象


官方文档 

预制件 - Unity 手册

相关教程 

基本概念-Prefab

我的Unity版本

2021.3.6

1 预制件的作用

unity中我们通常需要给游戏对象添加一些比如刚体、碰撞体等组件实现一些效果。但当遇到同一个NPC、场景中的道具在场景中需要被重复使用时,如果只是一步一步重复添加组件,效率会非常低,这是我们就希望把同一种需要复制的对象打包起来,需要用的时候直接复制粘贴即可。

预制件就是unity提供给用户的一个实现上述操作的资源类型。

2 预制件的定义

  • 预制件(prefab)是一种assert资源类型;
  • 预制件用于存储游戏对象(GameObject)对象以及配套的组件和属性;
  • 预制件充当一种模板功能,是一个可重复使用的资源模板

3 预制件的优点

既然它是一个打包好的资源模板,那么优点就清晰可见了。它可以轻松的大范围的修改项目的内容,无需对每个单一对象进行重复编辑,节省了大量的时间。

4 一般使用的场景

  • 环境资源——很多的山、树等,会预先做好再导成预制件
  • 武器的炮弹——大炮发射的实例化炮弹预制件
  • 玩家——玩家预制件会被放在各个关卡的起点位置

5 预制件的创建&使用

5.1 创建

  • 在文件夹右键 -> Create -> Prefab,就可以创建一个预制件;

 

  • 将场景中想要实现复制的对象拖到这个预制件资源 -> 弹出提示框没选择Replace -> 就创建了一个可重复使用的资源模板;

  • 此时, 原本的对象前面的图标也改变了,从线框 -> 实心 ;属性面板也多了Prefab属性。

  

5.2 使用

使用就很简单了,要么直接拖入Scene视图,要么ctrl+D复制即可。

6 预制件的编辑

6.1 更改预制件本身

双击进入预制件,就会把关注集中在预制件本身,给他做修改、添加组件即可。同时预制件设置的操作,会在场景中所有由预制件生成的实例对象做更改

6.2 更改实例对象

如果在预制件生成的实例对象做更改,修改后,需要在Inspector面板上方的Prefab栏 -> Overrides做操作

  • Revert All——还原到预制件
  • Apply All——修改预制件的值

还可以单独做更改,同时对应的Revert和All意思跟上面的一样。

6.3 实例属性优先于预制件

需要注意的点是,如果在预制件生成的实例对象里对某个值做了修改以后,这个值就会被覆盖掉,再在预制件中进行修改是不会改变当前实例对象的值的。

这个很好理解,预制件相当于所有子对象的父类,生成的实例子对象是子类,父类的操作总是在子类之前的,因此子类就具有修改所谓的优先性,属性的修改也优先于预制件。

7 预制件变体 Prefab Variant

直接引用UP教程举例的关系图:

预制件变体是由原来预制件创建出来的新的预制件,在保留了原来预制件的基础上,还添加了新的特性,这些预制件变体还可以变出自己的变体,再由这些变体生成对应的不同的对象。

7.1 预制件特点

  • 预制件变体继承基础预制件的属性
  • 预制件变体的属性覆盖优先于基础预制件

7.2 预制件的创建

  • Project面板 -> 右键想要当作基础预制件的Prefab -> Create -> Prefab Variant
  • 直接拖入想要当作预制件变体的对象,会有提醒是否创建预制件变体

8 预制件unpack成对象

如果不想让预制件继续充当预制件了,在hierarchy窗口右键,Prefab -> unpack,就能解包成一个单纯的游戏对象了。

以上是关于Unity入门计划基本概念-2D碰撞体Collider 2D的主要内容,如果未能解决你的问题,请参考以下文章

Unity入门计划基本概念-2D刚体Rigidbody 2D

Unity Rigidbody2D 手册

Unity 2D复活点的制作

Unity2D碰撞穿透的问题

Unity精灵动画 2D碰撞

Unity之碰撞体组件