Aseprite工具入门教程5之Tilemap地图

1、Unity中的瓦片地图

2、使用瓦片地图的好处

  1. 提高效率与性能:瓦片地图通过重复使用一组小的图像(即瓦片)来构建大型游戏世界,这比直接使用大图要高效得多。因为这些小图像可以被复用,减少了内存使用量,并且能够更有效地进行渲染。

  2. 简化设计过程:利用瓦片编辑工具(如Unity的Tilemap系统、Tiled等),设计师可以方便地创建和修改游戏地图。不需要对每个细节单独绘制,而是通过组合不同的瓦片来快速实现复杂的设计。

  3. 便于管理和维护:由于地图是由多个独立的小瓦片组成的,因此很容易进行局部更新或修改。如果需要调整某个区域的设计,只需替换对应的瓦片即可,无需重新制作整个地图。

  4. 支持动态内容加载:对于非常大的游戏世界,可以通过仅加载玩家附近的瓦片地图部分,减少内存占用和提升加载速度,从而实现无缝的世界探索体验。

  5. 利于优化:瓦片地图允许开发者针对特定类型的瓦片应用优化措施,比如将静态瓦片合并为更大的纹理(称为合图技术),以减少Draw Call的数量,进而提高渲染效率。

  6. 促进团队协作:在多人合作的游戏开发项目中,瓦片地图使得分工更加明确,美术人员专注于设计瓦片,而关卡设计师则负责使用这些瓦片来搭建场景,两者可以并行工作,提高开发效率。

  7. 增强灵活性:可以根据游戏规则轻松改变地形,例如,在策略游戏中,玩家可能需要根据战斗情况改变地形布局;或者在平台跳跃游戏中,可以随机生成关卡布局,增加游戏的可玩性和重玩价值。

3、Aseprite绘制素材

可以通过AI生成素材,比如下面:

注意:

1)可以添加黑色背景,用于测试有无多余的像素,尤其针对AI生成后进行修正的素材,导出时关闭该Layer。

2)以16*16构建素材。每个素材占用的大小是16*16的倍数。

3)最后生成png图片

4、Unity中导入素材创建地图

(1)导入Unity并分割素材

将Aseprite创造的png图片拖入Assets相应目录下,

Sprite Mode:选择Multiple

Pixels Per Unit:16

Filter Mode:Point

Compression:None

最后点击Sprite Editor,

(2)创建Tilemap对象

右击GameObject -> 2D Object -> Tilemap -> Rectangular

得到Grid和Tilemap2个对象。

将Grid对象重命名为Tilemap Grid,将Tilemap对象重命名为Ground1。

然后复制Ground1依次得到如下对象:

之所以创建这么多对象,是因为我们构建的地图是多层次的。

  • Ground1:最基本的地面层,比如草地、泥土或者任何作为最底层的基础地形
  • Ground2:这一层添加多样化的地形元素,比如不同类型的土壤、石头等,用来增加地面层的细节和变化
  • Ground3:进一步增强地面层的复杂性,比如小型的悬崖边、小山丘等
  • GroundDecoration1、2:地面装饰物
  • Instances:通常用于动态生成的对象,比如某些物品
  • Front1:前景区第一层,适用于放置不阻挡角色移动但需显示在角色前方的元素,比如矮树丛、小型灌木等
  • Front2:更高或更复杂的前景元素
  • Collisions:碰撞检测层

(3)创建Sorting Layer

点击Add Sorting Layer。

然后每个对象依次设置为对应名称的Sorting Layer。

(4)创建Tilemap预制体

将Tilemap Grid对象拖入Project中生成预制体

然后右击Hierarchy下的Tilemap Grid,右击 -> Prefab -> Unpack Completely。如果Tilemap Grid与预设体有关联,将大大减慢速度。

(5)创建Tile

第1步,在Assets下创建Tilemap目录,

我们将创建2个目录,

Tile Palettes存放瓦片地图对象,

Tiles存放图片对应的瓦片数据(即png中每个16*16方格都是一个瓦片,都有一条数据),再此目录下再创建子目录命名为GroundTileSet,表示后续用于存放GroundTileSet对象对应的瓦片数据。

第2步,打开Tile Palette

Window -> 2D -> Tile Palette。

第3步,Create New Palette

第4步,重命名Palette名称

点击Create后选择Tile Pelettes目录

第5步,将png图片拖到Tile Palette面板下,并选择对应的存放路径:

此时可以看到有瓦片图片了。

(6)构建地图

在Tile Palette中使用Coordinate Brush构建地图,该工具可以在Scene中看到坐标信息,创建使用参考:

Unity下创建Coordinate Brush工具-CSDN博客

选择对应的Tilemap对象,就可以构建tilemap地图了。

5、Unity中设置Tilemap碰撞

在tilemap地图中,我们需要设置部分区域不可穿透,比如墙壁、房屋。

第1步,创建碰撞体的形状,以下3种即可:

第2步,将素材放到Tile Palette中,参考上一节中的第(1)、(2)步。

第3步,使用上面的素材画Tile信息,并且绑定到Collisions对象上

第4步,给Player添加Riigidbody 2D和Box Collider 2D组件

Riigidbody 2D中确保Body Type为Dynamic,而不是Kinematic类型

另外还需要冻结z轴,避免Collision使用半三角形素材,导致行走时人体倾斜了。

在Box Collider 2D组件中,设置Editor Collider在Player的脚部即可。

第5步,给Collisions对象添加Tilemap Collider 2D组件

此时Player行走时,就不会穿透墙壁了。

第6步,碰撞器性能优化

下图中每一个绿色边缘的方块代表一个碰撞器,当角色移动时可能要触发与N个碰撞体的碰撞检测,这个效率太低了。

所以,需要把所有这些合并起来。一个区域设置为一个单独的碰撞器即可。所以连在一起的区域的创建一个复合碰撞器。

给Collisions对象添加Composite Collider 2D组件,并且设置Geometry Type为"Polygons"。

Collisions对象的Tilemap Collider 2D组件下,勾选"Used By Composite"。

此时我们看到原来N个碰撞器合并成了一个平铺的多边形的碰撞器。

第7步,将Collisions对象的Rigidbody 2D组件的Body Type设置为Static

第8步,Collisions对象的Tilemap Renderer反选,这样就看不到蓝色标记了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值