Unity(2022.3.38LTS) - 瓦片地图和地图碰撞体
在 Unity 中,瓦片地图(Tilemap)和碰撞体是用于构建游戏场景的重要工具。概念特点创建与使用概念类型碰撞检测。
·
目录
5.瓦片地图 2D 碰撞体 (Tilemap Collider 2D)
一. 简介
在 Unity 中,瓦片地图(Tilemap)和碰撞体是用于构建游戏场景的重要工具。
一、瓦片地图(Tilemap)
-
概念
- 瓦片地图是一种将游戏场景分割成小的瓦片单元进行构建的技术。这些瓦片可以是各种地形、建筑物、道具等元素。通过组合不同的瓦片,可以快速创建出复杂的游戏场景。
- 例如,在一个角色扮演游戏中,可以用瓦片地图来构建森林、城镇、洞穴等不同的场景区域。
-
特点
- 高效性:使用瓦片地图可以大大提高场景构建的效率,减少美术资源的加载时间。因为相同的瓦片可以重复使用,而不需要为每个场景元素单独创建模型。
- 易于编辑:Unity 的瓦片地图编辑器提供了直观的界面,让开发者可以轻松地绘制和编辑场景。可以快速调整瓦片的位置、旋转和缩放,以及更换不同的瓦片类型。
- 灵活性:可以通过脚本控制瓦片地图的生成和修改,实现动态的游戏场景。例如,可以根据玩家的行为或游戏进度改变场景的布局。
-
创建与使用
- 创建瓦片地图:在 Unity 中,可以通过 “Window” 菜单下的 “2D” 选项中的 “Tile Palette” 和 “Tilemap Editor” 来创建和编辑瓦片地图。首先,需要创建一个瓦片调色板,将所需的瓦片资源添加到调色板中。然后,在场景中创建一个瓦片地图对象,并使用调色板中的瓦片进行绘制。
- 使用瓦片地图:可以在脚本中通过访问瓦片地图的组件来获取和修改瓦片的信息。例如,可以检测玩家与特定瓦片的交互,或者根据游戏状态动态地改变瓦片的外观。
二、碰撞体
-
概念
- 碰撞体是用于检测游戏对象之间碰撞的组件。在 Unity 中,碰撞体可以添加到游戏对象上,以定义其形状和碰撞范围。当两个带有碰撞体的游戏对象发生碰撞时,Unity 会触发相应的事件,开发者可以在脚本中处理这些事件。
- 例如,在一个平台游戏中,玩家角色和平台都需要添加碰撞体,以便玩家能够站在平台上,并且在碰撞到墙壁等障碍物时停止移动。
-
类型
- Box Collider(盒型碰撞体):适用于近似长方体形状的游戏对象。可以调整碰撞体的大小和位置,以适应不同的对象形状。
- Sphere Collider(球形碰撞体):用于模拟球形物体的碰撞。可以设置球体的半径来调整碰撞范围。
- Capsule Collider(胶囊型碰撞体):结合了圆柱体和两个半球体,适用于模拟人物角色等近似胶囊形状的对象。
- Mesh Collider(网格碰撞体):根据游戏对象的网格形状生成碰撞体。这种碰撞体最准确,但计算成本较高,通常只在必要时使用。
-
碰撞检测
- Unity 的物理引擎会自动处理碰撞检测。当两个游戏对象的碰撞体发生接触时,会触发 OnCollisionEnter、OnCollisionStay 和 OnCollisionExit 等事件。开发者可以在脚本中监听这些事件,并根据碰撞的情况执行相应的逻辑。
- 例如,可以在玩家角色与敌人碰撞时减少玩家的生命值,或者在玩家收集道具时触发相应的效果。
二. 创建地图
1.素材配置
选择素材
修改一下参数点击应用
然后切割一下
按照自己的图片大小 切割一下
然后点击应用
这样就成功了
2.创建矩形瓦片地图
在层级页面 鼠标右键 2D对象 - 瓦片地图 - 矩形
3.创建平铺调色板
窗口 -> 2D -> 平铺调色板
1. 这里默认选择了场景内活动状态的地图,
2.这里选择
在弹出的文件页面,选择相应的文件夹即可。
然后把美术资源拖到里面
这样就可以使用了。
三. 绘制地图
选择画笔,
选择地图。点击左键(也可以拖动左键,多选)
在场境内绘制。点击左键。
添加碰撞
在Tilemap物体上
选择添加组件
四.组件的详细说明
1.Grid
属性 | 功能 |
---|---|
单元格大小 | 该网格单元格的大小。 |
Cell Gap | 输入该网格单元格之间的间隙大小(使用 Unity 单位)。如果输入一个负数,其绝对值高于__Cell Size__,Unity 会自动更改该绝对值,以匹配 Cell Size。 例如,如果 Cell Size 是 (1, 1, 0) 且 Cell Gap 设置为 (–2, –2, 0),编辑器将自动将 Cell Gap 的值更改为 (–1, –1, 0)。 |
单元格布局 | 从下拉菜单中选择一个选项来定义此网格上单元格的形状和排列。 |
矩形 | 单元格为矩形。 |
Hexagon | 单元格为六边形。 |
Isometric | 对于等距布局,单元格为菱形。 |
Isometric Z as Y | 与 Isometric Grid 布局类似,但 Unity 将单元格的 Z 位置转换为其局部 Y 坐标。 |
Cell Swizzle | 选择一个顺序,Unity 为变换转换重新排序 XYZ 单元格坐标。请参阅 Wikipedia 上有关重排 (Swizzling)的文章以了解更多详细信息。 |
XYZ | Grid 组件使用默认的 XYZ 单元格坐标。 |
XZY | Grid 组件将 XYZ 坐标重新排序为 XZY。 |
YXZ | Grid 组件将 XYZ 坐标重新排序为 YXZ。 |
YZX | Grid 组件将 XYZ 坐标重新排序为 YZX。 |
ZXY | Grid 组件将 XYZ 坐标重新排序为 ZXY。 |
ZYX | Grid 组件将 XYZ 坐标重新排序为 ZYX。 |
2.Tilemap
属性 | 功能 |
---|---|
动画帧率 | Unity 播放瓦片动画的速率。增加或减少此值会根据等效因子更改速度(例如,如果将此值设置为 2,Unity 将以两倍速度播放瓦片动画)。 |
Color | 选择一种颜色应用为此瓦片地图上的瓦片的色调。设置为白色(默认颜色)可使 Unity 不带色调地渲染瓦片。 |
Tile Anchor | 输入瓦片地图上沿 XYZ 轴偏移瓦片锚点位置的数量(以单元格为单位)。 |
Orientation | 选择瓦片地图上瓦片的方向。如果需要在特定平面定位瓦片,请使用此属性。 |
XY | Unity 在 XY 平面上定位瓦片。 |
XZ | Unity 在 XZ 平面上定位瓦片。 |
YX | Unity 在 YX 平面上定位瓦片。 |
YZ | Unity 在 YZ 平面上定位瓦片。 |
ZX | Unity 在 ZX 平面上定位瓦片。 |
ZY | Unity 在 ZY 平面上定位瓦片。 |
Custom | 选择此选项可启用以下自定义方向设置。 |
Position | 设置自定义方向的位置偏移。默认情况下禁用此选项,在 Tilemap 的方向设置为 Custom 时启用。 |
Rotation | 设置自定义方向的旋转。默认情况下禁用此选项,在 Tilemap 的方向设置为 Custom 时启用。 |
规模 | 设置自定义方向的比例。默认情况下禁用此选项,在 Tilemap 的方向设置为 Custom 时启用。 |
3.瓦片地图渲染器 (Tilemap Renderer)
属性 | 功能 |
---|---|
Sort Order | 设置所选瓦片地图上的瓦片排序方向。 |
Mode | 设置渲染器的渲染模式。 |
Chunk | 渲染器按位置对瓦片进行分组,并将瓦片的精灵一起批处理以进行渲染。选择此模式可在瓦片地图中获得最佳渲染性能。 |
Individual | 渲染器单独渲染每个瓦片,并且考虑它们的位置和排序顺序。此模式使瓦片上的精灵能够与场景中的其他渲染器或与自定义排序轴进行交互。 |
检测块剔除边界 | 确定渲染器如何检测用于剔除瓦片地图块的边界。这些边界可扩展瓦片地图块的边界,以确保在剔除过程中不会裁剪过大的精灵。 |
Auto | 渲染器会自动检查瓦片使用的精灵,以确定要使用的扩展剔除边界。 |
Manual | 用于扩展边界以剔除瓦片地图块的值是手动设置的,而不使用 Editor 的自动检测功能。 |
块剔除边界 | 如果选择了上面的 Manual,则会启用。输入剔除边界扩展的值(采用 Unity 单位)。 |
Sorting Layer | 设置瓦片地图的 Sorting Layer)。从下拉框中选择现有的排序图层,或创建新的排序图层。 |
图层顺序 | 设置瓦片地图在其排序图层中的渲染优先级。首先渲染编号较低的图层。编号较高的图层叠加在前者之上。 |
掩码交互 | 设置 Tilemap Renderer 在与精灵遮罩交互时的行为方式。 |
None | 瓦片地图渲染器不与场景中的任何精灵遮罩交互。这是默认选项。 |
Visible Inside Mask | Tilemap Renderer 仅渲染 Sprite Mask 覆盖的 Tilemap 区域。 |
Visible Outside Mask | Tilemap Renderer 完全渲染 Tilemap,但减去 Sprite Mask 覆盖的区域。 |
4.瓦片资源
点击创建好的瓦片资源
检查器上就会有相应的参数
属性 | 功能 |
---|---|
预览 | 显示所选瓦片的视觉效果预览。 |
Sprite | 选择要在此瓦片上渲染的精灵。单击右侧的圆圈图标可打开对象选择器窗口,然后从可用的精灵资源中进行选择,或者将精灵直接拖到此框中。 |
Color | 使用所选颜色为此瓦片上放置的精灵进行着色。设置为白色时,将渲染没有色调的精灵。 |
Collider Type | 定义为瓦片生成的碰撞体的形状。 |
None | 不生成碰撞体。 |
Sprite | 基于所选__精灵__的轮廓生成碰撞体形状。 |
Grid | 碰撞体形状基于__瓦片地图__的单元格。单元格的形状取决于瓦片地图的单元格布局。 |
5.瓦片地图 2D 碰撞体 (Tilemap Collider 2D)
属性 | 功能 |
---|---|
最大瓦片更改计数 | 在进行完全碰撞体重建而不是增量重建之前,累积的瓦片更改(如对瓦片地图进行瓦片的添加/删除)的最大数量。 大量的累积更改会导致 Tilemap Collider 2D 增量重建的速度比完全重建要慢。减小此值可解决此问题。 |
Extrusion Factor | 设置每个瓦片挤出碰撞体形状的量(采用 Unity 世界空间单位)。这最大限度地减少了相邻瓦片的碰撞体形状之间的间隙,并使它们保持在__Composite Collider 2D__ 中的 Vertex Distance 设置的最小范围内,从而将瓦片碰撞体组合在一起。 默认情况下会禁用此属性,显示为灰色。仅当启用了 Used by Composite 并且同一个游戏对象附加了一个 2D 复合碰撞体 时可用。 |
Material | 一种物理材质,可用于确定__碰撞__的属性(例如摩擦和弹性)。 |
是触发器 | 选中此复选框可使 Tilemap Collider 2D 组件作为触发器运行。 |
由效应器使用 | 选中此复选框可使 Tilemap Collider 2D 组件由附加的 Effector 2D 组件使用。 |
由 Composite 使用 | 选中此复选框可使此碰撞体被附加的 Composite Collider 2D 使用。 当 Used by Composite 启用时,Tilemap Collider 2D 组件中除 Offset 之外的所有属性都不再可用。相反,这些属性由附加的 Composite Collider 2D 组件控制。 |
Offset | Tilemap Collider 2D 几何形状的局部偏移 |
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献9条内容
所有评论(0)