文章目录

  • 一、前言
  • 二、本文最终效果
  • 三、MAST工具基本操作
  • 1、工具下载:Modular Asset Staging Tool(MAST)
  • 2、导入工具:Import
  • 3、创建场景:Scene
  • 4、方块网格:Mesh
  • 5、贴图图片:Texture
  • 6、制作材质球:Material
  • 7、制作预设:Prefab
  • 8、打开MAST窗口
  • 9、载入预设
  • 10、预设批量挂MASTPrefabSettings脚本
  • 11、铅笔:绘制单个方块
  • 12、刷子:连续绘制方块
  • 13、油漆桶:区域大片绘制方块
  • 14、骰子:随机属性
  • 15、橡皮擦:擦除方块
  • 16、旋转
  • 17、翻转
  • 18、材质绘制
  • 19、还原材质
  • 20、设置层高
  • 四、正片开始
  • 1、准备素材
  • 2、铺方块
  • 3、加点细节
  • 4、导航烘焙
  • 5、添加天空盒
  • 6、添加主角
  • 7、添加摇杆控制
  • 8、运行效果
  • 五、体素资源推荐
  • 1、资源一
  • 2、资源二
  • 3、资源三
  • 4、资源四
  • 5、资源五
  • 6、资源六
  • 7、资源七
  • 六、结束语


一、前言

嗨,大家好,我是新发。

之前我写了一篇Unity使用2D Tilemap制作经典2D横版游戏关卡场景地图的文章:《[Unity 2D] 重温红白机经典FC游戏,顺便教你快速搭建2D游戏关卡(Tilemap | 场景 | 地图)》

unity地编_unity地编


又写了一篇Unity使用HexTiles制作广州地铁3D地图的文章:《[原创] 用Unity等比例制作广州地铁,广州加油,早日战胜疫情(Unity | 地铁地图 | 第三人称视角)》

unity地编_Tile3D_02


这两篇文章的点赞、收藏量都蛮高的,今天,我再写一篇3D体素(voxel)场景地图制作的文章吧~

二、本文最终效果

本文最终运行效果:

unity地编_voxel_03


unity地编_Tile3D_04


本工程源码已上传到CodeChina,感兴趣的同学可自行下载学习。

地址:

注:我使用的Unity版本:Unity 2021.1.7f1c1 (64-bit)

unity地编_unity_05

三、MAST工具基本操作

1、工具下载:Modular Asset Staging Tool(MAST)

本文使用到的体素地图编辑器是MAST,全称Modular Asset Staging Tool,可以在Unity AssetStore上免费下载使用,新发良心推荐,建议收藏~

下载地址:https://assetstore.unity.com/packages/tools/level-design/mast-modular-asset-staging-tool-154939

unity地编_Tile3D_06

2、导入工具:Import

UnityPackage Manager中下载完成后,点击Import按钮,将工具导入到工程中,

unity地编_Tile3D_07


导入成功后,可以打开它给我们做好的Demo场景MAST Demo Scene

unity地编_unity_08


如下:

unity地编_Tile3D_09


下面,我们抛开它的Demo场景,从零开始做一个自己的场景,我会在制作过程中讲解工具的使用方法和涉及到的一些知识点~

3、创建场景:Scene

Project视图中右键鼠标,点击菜单Create Scene,创建一个新的场景,

unity地编_Tile3D_10


命名为MyScene,如下:

unity地编_unity地编_11


unity地编_unity_12

4、方块网格:Mesh

最简单的体素场景是由一个个3D的方块组成的,对应的网格如下,

unity地编_体素_13


当然,还可以是其他的形状的网格,

unity地编_Tile3D_14


不过我们先以最简单的3D的方块网格为例。

5、贴图图片:Texture

一个3D方块有6个面:上下前后左右,所以贴图也需要画6个面,

unity地编_unity_15


它的贴图如下,分别对应上下前后左右6个面,

unity地编_voxel_16


准备一些我们需要的贴图,比如草地、泥土、墙、水:

unity地编_Tile3D_17

unity地编_Tile3D_18

unity地编_voxel_19


unity地编_unity_20

注意,注意图片的格式设置如下:

unity地编_unity_21


其中Filter Mode设置为Point (no filter),意思就是纹理在通过 3D变换拉伸时以最靠近的采样点的颜色为准,效果图片呈现色块状,我们可以对比下Filter ModeBilinear (双线性)Point (no filter)的效果,

unity地编_体素_22

unity地编_voxel_23

6、制作材质球:Material

我们要把贴图贴到模型上,需要通过材质球,所以我们先创建材质球。

以草地材质球为例,创建一个Material,重命名为grass

unity地编_Tile3D_24


设置材质球的shaderStandard,设置Albedo为我们的草地贴图,设置Rendering ModeOpaque (不透明的),将Metallic (金属度)Smoothness (光滑度)都设置为0,如下:

unity地编_Tile3D_25


这样,我们得到一个草地材质球啦~

unity地编_Tile3D_26


同理制作其他的材质球,

unity地编_unity地编_27

7、制作预设:Prefab

接下来,我们要把上面的素材整合包装成预设,以草地方块预设为例。

Hierarchy视图空白处右键鼠标,点击菜单Create Empty,创建一个空物体,

unity地编_unity_28


重命名为grass

unity地编_unity_29


再在它的子节点下创建一个空物体,重命名为mesh

unity地编_unity_30


mesh节点添加MeshFilterMeshRendererMeshCollider组件,

unity地编_体素_31


MeshFilter组件的Mesh赋值方块Mesh,给MeshRenderer组件的Material赋值草的材质球grass,如下:

unity地编_unity地编_32

此时效果如下:

unity地编_unity_33


将其保存为预设,放在Prefabs目录中,

unity地编_unity地编_34


同理制作其他方块预设,如下:

unity地编_unity地编_35

8、打开MAST窗口

点击菜单Tools / MAST / Open MAST Window,打开MAST窗口,

unity地编_unity_36


界面如下:

unity地编_unity地编_37


界面的按钮不少,不要着急,下面我会根据操作过程进行介绍。

9、载入预设

点击这个文件夹按钮,

unity地编_体素_38


选择我们刚刚预设保存的目录,即Assets/Prefabs,点击选择文件夹按钮,

unity地编_Tile3D_39


此时窗口中就会列出目录中的预设缩略图,

unity地编_Tile3D_40


事实上,它是先在我们预设所在的目录中生成了缩略图然后展示在MAST窗口中的,

unity地编_Tile3D_41

10、预设批量挂MASTPrefabSettings脚本

在开始刷体素方块之前,我们需要先给我们做的方块预设统一挂上MASTPrefabSettings脚本,点击Tools按钮,点击Add MAST Script to Prefabs按钮,

unity地编_Tile3D_42


选择我们的预设所在的文件夹,即Assets/Prefabs,点击选择文件夹按钮,

unity地编_体素_43


此时,我们的预设就批量挂上MASTPrefabSettings脚本了,

unity地编_unity_44

11、铅笔:绘制单个方块

先点击铅笔按钮,再选择要绘制的方块,

unity地编_unity地编_45


然后在Scene视图中点击即可绘制出一个方块,如下:

unity地编_voxel_46

12、刷子:连续绘制方块

先点击刷子按钮,再选择要绘制的方块,

unity地编_voxel_47


然后在Scene视图中按住鼠标拖动即可连续绘制方块,如下:

unity地编_unity地编_48

13、油漆桶:区域大片绘制方块

先点击油漆桶按钮,再选择要绘制的方块,

unity地编_unity地编_49


然后在Scene视图中按住鼠标框选一个区域,即可在这个区域直接绘制大片方块,如下:

unity地编_体素_50

14、骰子:随机属性

要使用随机属性,需要在预设上勾选Use Randomizer

unity地编_unity地编_51


你可以设置随机的参数范围,可以随机旋转角度、缩放、对称、坐标等参数,

unity地编_Tile3D_52


接着,回到MAST窗口,先点击骰子按钮,再选择要绘制的方块,

unity地编_unity_53


然后在Scene视图中点击鼠标即可随机绘制方块,如下:

unity地编_voxel_54

15、橡皮擦:擦除方块

点击橡皮擦按钮,

unity地编_unity_55


然后在Scene视图中点击鼠标(或按住鼠标拖动)即可擦除方块,如下:

unity地编_unity_56

16、旋转

为了演示旋转,我先绘制一个比较有特征的物体,

unity地编_体素_57


先确定要绕着哪根轴旋转,接着选中要旋转的物体,最后点击旋转按钮即可,

unity地编_voxel_58


每次旋转的角度由预设的MASTPrefabSettings组件的Rotation Step决定的,

unity地编_Tile3D_59

17、翻转

翻转同理,先选择要翻转的轴,然后选择要翻转的对象,最后点击翻转按钮即可,如下:

unity地编_unity地编_60

18、材质绘制

我们可以给场景中已经绘制的方块替换材质。

点击Paint按钮,在点击文件夹按钮,

unity地编_unity地编_61


选择我们的材质球所在的文件夹,如Assets/Materials,点击选择文件夹按钮,

unity地编_unity地编_62


此时窗口中就会列出文件夹中的材质球,

unity地编_unity_63


点击毛笔按钮,在点击材质球,

unity地编_unity地编_64


接着在Scene场景中即可替换方块的材质了,如下:

unity地编_体素_65

19、还原材质

点击刷子按钮,

unity地编_体素_66


然后在Scene视图中点击刚刚被替换材质的方块,即可还原对应的材质,

unity地编_Tile3D_67

20、设置层高

我们上面都是在一个平面层上刷方块,如果我们想要在不同的平面层刷方块,可以调整层高,

unity地编_voxel_68

四、正片开始

工具基本操作讲完了,接下来是正片(此处应有背景音乐)。

1、准备素材

注:不知道哪里找体素资源的同学,我文章末尾贴了资源下载地址~

网格:

unity地编_体素_69


贴图:

unity地编_Tile3D_70


包装成预设:

unity地编_Tile3D_71

2、铺方块

开始铺方块,

unity地编_Tile3D_72


铺啊铺,

unity地编_unity地编_73

3、加点细节

再加点细节,水、桥、机关、星星、生成点等等,

unity地编_Tile3D_74


差不多这样子,

unity地编_Tile3D_75

4、导航烘焙

把所有方块(除了水的方块)设置为Static

unity地编_体素_76


点击菜单Window / AI / Navigation,打开Navigation窗口,

unity地编_voxel_77


点击Bake标签页,设置一下Agent参数,最后点击Bake

unity地编_unity_78


烘焙成功,可以看到路面出现蓝色的网格,

unity地编_体素_79

5、添加天空盒

现在天空太单调了,

unity地编_voxel_80


我们加个天空盒,我上一篇文章《Unity实战篇,小岛城堡里的常春藤,听新发剖析Unity案例知识点》中用到了一个天空盒,我很喜欢这个天空盒,

unity地编_体素_81


我们把它弄过来,天空盒贴图如下,分别是前后左右下上6张图:

unity地编_Tile3D_82


对应的材质球如下,注意材质球使用的shaderSkybox/6 Sided,贴图分别赋值6张贴图:

unity地编_体素_83


把菜单Window / Rendering / Lighting

unity地编_unity_84


Lighting窗口中点击Environment标签页,赋值Skybox Material为我们的天空盒材质球,

unity地编_unity地编_85


效果如下,是不是超级治愈呢~

unity地编_体素_86


unity地编_体素_87

6、添加主角

主角依然使用我最喜欢的宇航员吧~

unity地编_Tile3D_88


喜欢这个宇航员模型的同学可以自行从这里下载:https://assetstore.unity.com/packages/3d/characters/humanoids/sci-fi/stylized-astronaut-114298 将模型下载导入Unity中,

unity地编_voxel_89


把主角拖入场景中,调整一下主角的缩放和坐标,如下:

unity地编_Tile3D_90

7、添加摇杆控制

在我之前那篇文章《[原创] 用Unity等比例制作广州地铁,广州加油,早日战胜疫情(Unity | 地铁地图 | 第三人称视角)》里面我做了一个双摇杆控制主角移动和控制摄像头的功能,也安排进来。

注:因为双摇杆我在上面这篇文章中已经讲了制作过程,所以这里就不赘述啦~

unity地编_unity_91

8、运行效果

最后运行效果如下:

unity地编_voxel_03


unity地编_Tile3D_04

五、体素资源推荐

末了,找不到体素资源的同学,我推荐几个吧~

1、资源一

下载地址:https://assetstore.unity.com/packages/3d/environments/fantasy/voxel-environments-1-152920

unity地编_unity地编_94


unity地编_voxel_95

2、资源二

下载地址:https://assetstore.unity.com/packages/3d/environments/dungeons/voxel-dungeon-environment-set-1-57394

unity地编_unity地编_96

3、资源三

下载地址:https://assetstore.unity.com/packages/3d/vegetation/trees/free-low-poly-boxy-stylized-trees-0-67258

unity地编_unity地编_97

4、资源四

下载地址:https://assetstore.unity.com/packages/3d/environments/3d-blocks-3-0-195023

unity地编_voxel_98

5、资源五

https://assetstore.unity.com/packages/3d/characters/animals/mammals/voxel-animals-pack-1-151257

unity地编_voxel_99

6、资源六

下载地址:https://assetstore.unity.com/packages/3d/environments/fantasy/isometric-pack-3d-62262

unity地编_unity_100

7、资源七

下载地址:https://assetstore.unity.com/packages/3d/environments/cube-world-proto-series-144159

unity地编_voxel_101


unity地编_体素_102

六、结束语