Unity2D学习笔记-Tilemap

这篇具有很好参考价值的文章主要介绍了Unity2D学习笔记-Tilemap。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

tilemap算是接触了几次,但是无论是看视频还是看文章都一知半解,这次把编辑地图的开始步骤搞清楚。

首先要知道tilemap是做什么的。
这里提到的Tilemap其实不止是Tilemap:Tilemap本身是地图编辑器(虽然我更倾向于理解为“场景”,不过编辑地图才是核心)。之前学的印象是,最主要是解决格式(或者说像素大小)的问题:本身自己的图片素材,与游戏的地图,这二者需要一个标准统一起来,这样才方便创建编辑。

而素材导入后通常是不能直接使用的,所以才有了本篇文章。我大概分为两部分:unity部分,是图片导入前unity需要准备的工作:创建Tilemap等(类似于通常在Hierarchy中创建Empty以用来承载模型素材);第二部分则是从图片导入及处理、再到在Scene中编辑地图的步骤。

(本文Inspector组件不包括Transform、Tag、Layer等基本组件属性)

1.Unity部分:

1.1Grid:

Grid不是直接创建的,而是在Hierarchy中创建Tilemap后自动生成的。在创建Tilemap后,会先生成一个Grid,展开有Tilemap。Grid是在Hierarchy面板中创建Tilemap自动生成的“父体”,而Tilemap则是Grid下的“子体”。Grid除了Transform等基本属性,本身还有Grid组件,其控制内容如图所示。如果用Procreate类比,那么Grid相当于画布,而Tilemap相当于图层。再次强调,cell size不等同于像素(关于cell size、像素和unit放在后面)。

这里插一点点对于像素的理解。

像素并不是一个长度单位,而是用来描述清晰度。例如同样大小的一块屏幕,像素点越多,图片越清晰;而相同个数的像素点,例如640X480,放在不同大小的屏幕上,清晰度也不一样。

关于这一点,找到一篇讲得非常详细的文章:

像素是什么,一个像素有多大,像素和分辨率的关系_TA-0-1的博客-CSDN博客_一个像素是多少毫米

再贴一篇关于pre unit的文章:Unity画布设置中Pixels Per Unit的概念

^

1.2 Tilemap:

自动包括Tilemap、Tilemap Renderer组件,以及图个Sprites-Default的默认shader(不对外界光照产生交互)。

Unity2D学习笔记-Tilemap

关于Sprites-Default这里贴一篇关系不大但是个人比较感兴趣的:Sprite Doodle Shader Effect 实现手绘涂鸦动效

1.2.1 Tilemap(瓦片地图):

Unity2D学习笔记-Tilemap

1.2.2 Tilemap Renderer(瓦片地图渲染器):

 Unity2D学习笔记-Tilemap

2.图片导入/处理部分:

从导入文件说起(叹气)。这里以unity自带的SunnyLand为例。

在SunnyLand的地图素材中有两个文件:tileset和tileset-sliced。区别在于后者已经切片而前者没有。那么很自然的第一个问题,什么是切片?这个要从对图片处理说起。

Unity2D学习笔记-Tilemap

 2.1 图片导入

选中Assets/SunnyLand/artwork中的Environment文件夹,里面包含如图所示文件。选中back,在Inspector中查看。 Unity2D学习笔记-Tilemap

Pixel Per Unit通常需要调整。

Tile Palette

Unity2D学习笔记-Tilemap

 Tile Palette:管理、编辑、利用瓦片绘图的工具。
新建一个palette:create new palette
将素材(上文提到的两个tileset拖拽到tile palette窗口)

对于未切片的素材:Unity2D学习笔记-Tilemap
先在Environment中选中tileset,并在Inspector中将Sprite Mode中的Single改为Multiple并apply(不改稍后无法切片);
点击Inspector中的Sprite Editor,并在弹出窗口中进行切片:
Unity2D学习笔记-Tilemap

 这里依然是一整块,而不是继续的一个个大小相同的正方形小块。尤其是对于矩形或不规则形状的图案。不利于编辑地图(例如想加长中间部分)。
因此,要想得到无论图案形状,最终可编辑的单位相同,需要更改Type。将Automatic改为Grid By Cell Size,并调整Pixel Size大小为16*16,效果如图。Unity2D学习笔记-Tilemap

Unity2D学习笔记-Tilemap

Unity2D学习笔记-Tilemap

 如果此时将单元格拖拽到scene中,会出现这样的情况Unity2D学习笔记-Tilemap

这是因为tileset中Pixel Pre Unit的大小与切片时的大小不同:在tileset的Inspector中, 一个单元格有100个像素;但是在tile palette进行切片时,选择的是每个单元格16个像素。改正后效果如图:

Unity2D学习笔记-Tilemap
图中scene看起来是矩形,实际上是正方形,只是截图时的参考线没截清楚

Tips:

  • Tile Palette不负责编辑素材,只是把处理好的素材用来编辑地图;
  • 有两处需要统一Pixel Pre Unit的地方:Inspector以及Sprite Editor中Slice时;
  • 窗口很多,不要混淆(Sprite Editor、Tile Palette等,是如何调出、在哪一步操作、功能是什么)

2.2 其他注意事项

2.2.1 对于已切片的素材 

刚才主要是针对未切片的素材。对于切片过的素材,仍然需要创建Tile Palette,否则会出现如下情况:
1,未选中Hierarchy,直接将图片拖入,无法(自动)对齐/吸附表格Unity2D学习笔记-Tilemap

 2,选中Hierarchy中Tilemap后拖入,会发现虽然可以自动对其,但仍然不在Tilemap下。Unity2D学习笔记-Tilemap

 对于已切片的素材,在Tile Palette中create new后直接拖入,然后编辑(不要忘了更改原素材中的Pixel Pre Unit)。 

原因:无论是否切片,编辑地图时一定要通过Tile  Palette,不能直接从Project拖入。

2.2.2 Grid中的Pixel Pre Unit

将Grid中CellSize由1改为2后出现了这样的情况:

Unity2D学习笔记-Tilemap
与上面出现过的情况类似。

3创建碰撞体

选中Hierarchy中的Tilemap,添加Tilemap Collider。


写完后发现其实还是有很多地方不清楚的,比如Tilemap的两个组件、无法填满的两种情况出现的原因,etc。不过刚入门也就只能到此为止了。路漫漫其修远兮,继续学吧。文章来源地址https://www.toymoban.com/news/detail-407224.html

到了这里,关于Unity2D学习笔记-Tilemap的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity2D实现子弹追踪目标

    实现子弹追踪目标有很多种方法,首先是一开始就选定了目标的位置,然后按照曲线运动轨迹的方式,持续运动到目标点,不过如果目标移动了,就得将对应的轨迹重新计算一次,另外如果需要设置范围的话更不好做。另一种是锐角追踪,就是在目标进入识别范围后,将子弹

    2024年02月06日
    浏览(37)
  • Unity2D绘制游戏地图

    首先,我们选择我们的地图素材(由于笔者在前段时间已经进行切割,最近才开始整理这一段,所以这个是用的老素材,可能有朋友就会觉得切割前后不一致,但是思路是一样的,大家学习思路即可)  接着,我们找到右上角的Slice进行图片切割,我这边简单介绍一下这个切

    2024年02月08日
    浏览(33)
  • 【Unity2D】角色动画的切换

    第一种方法是设置一个中间状态,从中间状态向其余各种状态切换,且各状态向其他状态需要设置参数 实现动作转移时右键点击Make Transition即可  实现动画转移需要设置条件 点击一种动画到另一种动画的线 ,然后点击加号添加Condition 比如机器人从向左走切换到向右走的条件

    2024年02月15日
    浏览(37)
  • Unity2D控制角色左右移动

    1.在Hierarchy一栏中选中角色; 2.在inspector栏最底端找到Add Component选项并点击; 3.添加Rigidbody2D,合适的collider和new script; 4.将添加的Rigidbody2D拖到new script中;   5.在project栏中找到新添加的C#文件并双击打开(如果还没有编辑代码的工具,推荐Vscode) 6.代码如下: using System.Nu

    2024年02月14日
    浏览(29)
  • Unity2d游戏项目--小狐狸

    (一) 在文件夹中找到back图片,并在检查器面板中将back图片的每单位像素数设置为16。 (文件所在地) (面板设置) (二) 将图片拖入到场景中 (一) 生成矩形的瓦片地图 (二) 打开平铺调色板 (三) 新建并命名为map,在原目录新建一个文件夹,用于存放你在这个瓦

    2024年02月03日
    浏览(26)
  • Unity2D-使人物翻转的方法

    方法①:使用组件: SpriteRenderer 使用 GetAxis() 和 GetAxisRaw() 没有区别 方法②:使用组件: Transform 情况1:使用 GetAxisRaw() ;没有刹车效果,及翻转过程没有过渡, m o v e F a c t o r moveFactor m o v e F a c t or 取-1,1,0 情况1:使用 GetAxis() ;有刹车效果,及翻转过程有过渡, m o v e F a c t

    2024年02月12日
    浏览(23)
  • Unity2D子弹朝向鼠标位置发射

    废话不多说,先说明一下我使用的变量 float attack_time 用于表示每次攻击的间隙时间 float current_time 攻击时间的冷却 Rigidbody2D body 2D刚体组件 Object bomb 需要发射的物体对象 创建一枚子弹,unity的Instantiate()函数就可以实现,这里需要的三个参数是物体对象(Object),生成位置(Vecto

    2024年02月10日
    浏览(38)
  • 【Unity2D】相机移动以及设置相机边界

    添加相机时,首先需要在unity中添加 Cinemachine 包 第一次使用这个包时,需要在Package Manager中搜索并安装  安装Camera Mechine包后,添加2D Camera 设置跟随对象为Ruby (从Hierarchy中将Ruby拖动到Follow中)   同时,由于世界是有边界的,要为相机设置边界 通过添加Extension为相机添加

    2024年02月16日
    浏览(30)
  • Unity2D中让角色旋转朝向鼠标

       实现该功能,你需要关注以下的几个步骤 1.获取角色的世界坐标 2.获取鼠标所在位置的世界坐标 3.获取角色朝向鼠标时候的向量 4.获取上一步骤的向量的反正切的弧度值 5.将弧度值转化为角度 6.将该角度应用于角色 ——————————分割线——————————  

    2023年04月08日
    浏览(80)
  • unity2D横版游戏教程8-音效

    简单介绍一下unity audio,auido包括三个东西,分别是Aduio Listener,Audio Source,Audio Clips。Audio Listener就相当于耳朵,是用来听声音的,Audio Source就相当于播放器,一个音源,可以播放声音,具体播放什么声音就靠Audio Clips 通常Audio Listener只有一个,默认情况下Audio Listener就在Main

    2024年02月08日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包