Unity(2022.3.38LTS) - 瓦片地图和地图碰撞体

2024-08-24 09:44

本文主要是介绍Unity(2022.3.38LTS) - 瓦片地图和地图碰撞体,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一. 简介

二. 创建地图

1.素材配置

2.创建矩形瓦片地图

3.创建平铺调色板

三. 绘制地图

添加碰撞

四.组件的详细说明

1.Grid

2.Tilemap

3.瓦片地图渲染器 (Tilemap Renderer)

4.瓦片资源

5.瓦片地图 2D 碰撞体 (Tilemap Collider 2D)



一. 简介

在 Unity 中,瓦片地图(Tilemap)和碰撞体是用于构建游戏场景的重要工具。

一、瓦片地图(Tilemap)

  1. 概念

    • 瓦片地图是一种将游戏场景分割成小的瓦片单元进行构建的技术。这些瓦片可以是各种地形、建筑物、道具等元素。通过组合不同的瓦片,可以快速创建出复杂的游戏场景。
    • 例如,在一个角色扮演游戏中,可以用瓦片地图来构建森林、城镇、洞穴等不同的场景区域。
  2. 特点

    • 高效性:使用瓦片地图可以大大提高场景构建的效率,减少美术资源的加载时间。因为相同的瓦片可以重复使用,而不需要为每个场景元素单独创建模型。
    • 易于编辑:Unity 的瓦片地图编辑器提供了直观的界面,让开发者可以轻松地绘制和编辑场景。可以快速调整瓦片的位置、旋转和缩放,以及更换不同的瓦片类型。
    • 灵活性:可以通过脚本控制瓦片地图的生成和修改,实现动态的游戏场景。例如,可以根据玩家的行为或游戏进度改变场景的布局。
  3. 创建与使用

    • 创建瓦片地图:在 Unity 中,可以通过 “Window” 菜单下的 “2D” 选项中的 “Tile Palette” 和 “Tilemap Editor” 来创建和编辑瓦片地图。首先,需要创建一个瓦片调色板,将所需的瓦片资源添加到调色板中。然后,在场景中创建一个瓦片地图对象,并使用调色板中的瓦片进行绘制。
    • 使用瓦片地图:可以在脚本中通过访问瓦片地图的组件来获取和修改瓦片的信息。例如,可以检测玩家与特定瓦片的交互,或者根据游戏状态动态地改变瓦片的外观。

二、碰撞体

  1. 概念

    • 碰撞体是用于检测游戏对象之间碰撞的组件。在 Unity 中,碰撞体可以添加到游戏对象上,以定义其形状和碰撞范围。当两个带有碰撞体的游戏对象发生碰撞时,Unity 会触发相应的事件,开发者可以在脚本中处理这些事件。
    • 例如,在一个平台游戏中,玩家角色和平台都需要添加碰撞体,以便玩家能够站在平台上,并且在碰撞到墙壁等障碍物时停止移动。
  2. 类型

    • Box Collider(盒型碰撞体):适用于近似长方体形状的游戏对象。可以调整碰撞体的大小和位置,以适应不同的对象形状。
    • Sphere Collider(球形碰撞体):用于模拟球形物体的碰撞。可以设置球体的半径来调整碰撞范围。
    • Capsule Collider(胶囊型碰撞体):结合了圆柱体和两个半球体,适用于模拟人物角色等近似胶囊形状的对象。
    • Mesh Collider(网格碰撞体):根据游戏对象的网格形状生成碰撞体。这种碰撞体最准确,但计算成本较高,通常只在必要时使用。
  3. 碰撞检测

    • 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)的文章以了解更多详细信息。
    XYZGrid 组件使用默认的 XYZ 单元格坐标。
    XZYGrid 组件将 XYZ 坐标重新排序为 XZY。
    YXZGrid 组件将 XYZ 坐标重新排序为 YXZ。
    YZXGrid 组件将 XYZ 坐标重新排序为 YZX。
    ZXYGrid 组件将 XYZ 坐标重新排序为 ZXY。
    ZYXGrid 组件将 XYZ 坐标重新排序为 ZYX。

2.Tilemap

属性功能
 动画帧率Unity 播放瓦片动画的速率。增加或减少此值会根据等效因子更改速度(例如,如果将此值设置为 2,Unity 将以两倍速度播放瓦片动画)。
Color选择一种颜色应用为此瓦片地图上的瓦片的色调。设置为白色(默认颜色)可使 Unity 不带色调地渲染瓦片。
Tile Anchor输入瓦片地图上沿 XYZ 轴偏移瓦片锚点位置的数量(以单元格为单位)。
Orientation选择瓦片地图上瓦片的方向。如果需要在特定平面定位瓦片,请使用此属性。
    XYUnity 在 XY 平面上定位瓦片。
    XZUnity 在 XZ 平面上定位瓦片。
    YXUnity 在 YX 平面上定位瓦片。
    YZUnity 在 YZ 平面上定位瓦片。
    ZXUnity 在 ZX 平面上定位瓦片。
    ZYUnity 在 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 MaskTilemap Renderer 仅渲染 Sprite Mask 覆盖的 Tilemap 区域。
    Visible Outside MaskTilemap 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 组件控制。
OffsetTilemap Collider 2D 几何形状的局部偏移

这篇关于Unity(2022.3.38LTS) - 瓦片地图和地图碰撞体的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102130

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

全英文地图/天地图和谷歌瓦片地图杂交/设备分布和轨迹回放/无需翻墙离线使用

一、前言说明 随着风云局势的剧烈变化,对我们搞软件开发的人员来说,影响也是越发明显,比如之前对美对欧的软件居多,现在慢慢的变成了对大鹅和中东以及非洲的居多,这两年明显问有没有俄语或者阿拉伯语的输入法的增多,这要是放在2019年以前,一年也遇不到一个人问这种需求场景的。 地图应用这块也是,之前的应用主要在国内,现在慢慢的多了一些外国的应用场景,这就遇到一个大问题,我们平时主要开发用的都是国内的地

Unity Post Process Unity后处理学习日志

Unity Post Process Unity后处理学习日志 在现代游戏开发中,后处理(Post Processing)技术已经成为提升游戏画面质量的关键工具。Unity的后处理栈(Post Processing Stack)是一个强大的插件,它允许开发者为游戏场景添加各种视觉效果,如景深、色彩校正、辉光、模糊等。这些效果不仅能够增强游戏的视觉吸引力,还能帮助传达特定的情感和氛围。 文档

Imageview在百度地图中实现点击事件

1.首先第一步,需要声明的全局有关类的引用 private BMapManager mBMapMan; private MapView mMapView; private MapController mMapController; private RadioGroup radiogroup; private RadioButton normalview; private RadioBu

Unity协程搭配队列开发Tips弹窗模块

概述 在Unity游戏开发过程中,提示系统是提升用户体验的重要组成部分。一个设计良好的提示窗口不仅能及时传达信息给玩家,还应当做到不干扰游戏流程。本文将探讨如何使用Unity的协程(Coroutine)配合队列(Queue)数据结构来构建一个高效且可扩展的Tips弹窗模块。 技术模块介绍 1. Unity协程(Coroutines) 协程是Unity中的一种特殊函数类型,允许异步操作的实现

MMO地图传送

本篇由以下四个点讲解: 创建传送点 传送点配置 编辑器扩展:传送点数据生成 传送协议与实现 创建传送点 建碰撞器触发 //位置归零 建一个传送门cube放到要传送的位置(这个teleporter1是传出的区域 这是从另一张地图传入时的传送门 创建一个脚本TeleporterObject给每个传送cube都绑上脚本 通过脚本,让传送门在编辑器下面还能绘制出来

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光 一,前言二,资源包内容三,免费获取资源包 一,前言 在创意的世界里,每一个细节都能决定一个项目的独特魅力。今天,要向大家介绍一款令人惊艳的粒子效果包 ——Super Confetti FX。 二,资源包内容 💥充满活力与动态,是 Super Confetti FX 最显著的标签。它宛如一位

Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(4)

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​​ Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(3)-CSDN博客  这节就是真正的存储数据了   理清一下思路: 1.存储路径并检查 //2进制文件类存储private static string Data_Binary_Pa

Unity Adressables 使用说明(一)概述

使用 Adressables 组织管理 Asset Addressables 包基于 Unity 的 AssetBundles 系统,并提供了一个用户界面来管理您的 AssetBundles。当您使一个资源可寻址(Addressable)时,您可以使用该资源的地址从任何地方加载它。无论资源是在本地应用程序中可用还是存储在远程内容分发网络上,Addressable 系统都会定位并返回该资源。 您

Unity Adressables 使用说明(六)加载(Load) Addressable Assets

【概述】Load Addressable Assets Addressables类提供了加载 Addressable assets 的方法。你可以一次加载一个资源或批量加载资源。为了识别要加载的资源,你需要向加载方法传递一个键或键列表。键可以是以下对象之一: Address:包含你分配给资源的地址的字符串。Label:包含分配给一个或多个资源的标签的字符串。AssetReference Obj