文章目录

  • 一、前言
  • 二、本文最终效果
  • 三、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使用HexTiles制作广州地铁3D地图的文章:《[原创] 用Unity等比例制作广州地铁,广州加油,早日战胜疫情(Unity | 地铁地图 | 第三人称视角)》

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

二、本文最终效果

本文最终运行效果:


本工程源码已上传到CodeChina,感兴趣的同学可自行下载学习。
地址:https://codechina.csdn.net/linxinfa/UnityTile3D
注:我使用的Unity版本:Unity 2021.1.7f1c1 (64-bit)

三、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

2、导入工具:Import

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

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

如下:

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

3、创建场景:Scene

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

命名为MyScene,如下:

4、方块网格:Mesh

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

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

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

5、贴图图片:Texture

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

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

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

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

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

6、制作材质球:Material

我们要把贴图贴到模型上,需要通过材质球,所以我们先创建材质球。
以草地材质球为例,创建一个Material,重命名为grass

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

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

同理制作其他的材质球,

7、制作预设:Prefab

接下来,我们要把上面的素材整合包装成预设,以草地方块预设为例。
Hierarchy视图空白处右键鼠标,点击菜单Create Empty,创建一个空物体,

重命名为grass

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

mesh节点添加MeshFilterMeshRendererMeshCollider组件,

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

此时效果如下:

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

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

8、打开MAST窗口

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

界面如下:

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

9、载入预设

点击这个文件夹按钮,

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

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

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

10、预设批量挂MASTPrefabSettings脚本

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

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

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

11、铅笔:绘制单个方块

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

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

12、刷子:连续绘制方块

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

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

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

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

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

14、骰子:随机属性

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

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

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

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

15、橡皮擦:擦除方块

点击橡皮擦按钮,

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

16、旋转

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

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

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

17、翻转

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

18、材质绘制

我们可以给场景中已经绘制的方块替换材质。
点击Paint按钮,在点击文件夹按钮,

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

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

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

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

19、还原材质

点击刷子按钮,

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

20、设置层高

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

四、正片开始

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

1、准备素材

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

网格:

贴图:

包装成预设:

2、铺方块

开始铺方块,

铺啊铺,

3、加点细节

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

差不多这样子,

4、导航烘焙

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

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

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

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

5、添加天空盒

现在天空太单调了,

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

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

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

把菜单Window / Rendering / Lighting

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

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

6、添加主角

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

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

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

7、添加摇杆控制

在我之前那篇文章《[原创] 用Unity等比例制作广州地铁,广州加油,早日战胜疫情(Unity | 地铁地图 | 第三人称视角)》里面我做了一个双摇杆控制主角移动和控制摄像头的功能,也安排进来。
注:因为双摇杆我在上面这篇文章中已经讲了制作过程,所以这里就不赘述啦~

8、运行效果

最后运行效果如下:

五、体素资源推荐

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

1、资源一

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

2、资源二

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

3、资源三

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

4、资源四

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

5、资源五

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

6、资源六

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

7、资源七

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

六、结束语

好了,就先写这么多吧~
我是新发,喜欢的记得点赞、收藏、关注,有什么技术上的问题,欢迎留言或私信~
拜拜~

【游戏开发实战】Unity快速搭建体素风格关卡地图(Tile3D | 我的世界 | Voxel | 场景 | 编辑器)相关推荐

  1. 【游戏开发实战】用Go语言写一个服务器,实现与Unity客户端通信(Golang | Unity | Socket | 通信 | 教程 | 附工程源码)

    文章目录 一.前言 二.Go开发环境搭建(Windows系统) 1.安装Go命令行工具 2.创建GoWorkspace目录 3.配置GOPATH环境变量 4.配置GOPROXY代理 5.安装VSCod ...

  2. 【游戏开发实战】Unity从零开发多人视频聊天功能,无聊了就和自己视频聊天(附源码 | Mirror | 多人视频 | 详细教程)

    文章目录 一.前言 二.思考问题与解决方案 1.思考问题 2.解决方案 2.1.Unity中如何开启摄像头并对图像进行采样 2.2.图像如何中转给其他客户端 2.3.如何实现清晰度切换 2.4.客户端 ...

  3. 《Unity 5.x游戏开发实战》一1.9 添加一个水平面

    本节书摘来异步社区<Unity 5.x游戏开发实战>一书中的第1章,第1.9节,作者: Alan Thorn 译者: 李华峰 责编: 胡俊英,更多章节内容可以访问云栖社区"异步社 ...

  4. 【游戏开发实战】Unity手游第一人称视角,双摇杆控制,FPS射击游戏Demo(教程 | 含Demo工程源码)

    文章目录 一.前言 二.实现方案 1.无主之地,第一人称视角 2.我之前做的摇杆控制 3.第一人称视角 + 摇杆控制 三.开始实战 1.资源获取:Unity AssetStore 2.Low Poly ...

  5. 《Unity 2D与3D手机游戏开发实战》简介

    #好书推荐##好书奇遇季#<Unity 2D与3D手机游戏开发实战>,京东当当天猫都有发售.彩色印制,定价89元,网店打折销售更便宜.本书配套源码.PPT课件,适合Unity游戏开发初学者 ...

  6. 【Unity】动作游戏开发实战详细分析-07-连续技与组合技功能设计

    [Unity]动作游戏开发实战详细分析-07-连续技与组合技功能设计 基本思路 在一些动作游戏中,存在着连续技这一功能,具体来说就是连续按下规定的按键会触发能力的功能,或者是长按触发等等. 实现解析 ...

  7. 【Unity】动作游戏开发实战详细分析-16-敌人AI设计

    [Unity]动作游戏开发实战详细分析-16-敌人AI设计 基本思想 本文来实现简单的敌人AI,使用协程来开发AI.如果想要使用行为树插件可自行学习使用. 代码实现 敌人的目标信息结构 用于存储所有的 ...

  8. 【游戏开发实战】教你在Unity中实现模型消融化为灰烬飘散的效果(ShaderGraph | 消融 | 粒子系统 | 特效)

    文章目录 一.前言 二.ShaderGraph环境准备 三.模型准备:原神角色模型 四.实现思路 1.效果一的实现思路 2.效果二的实现思路 五.ShaderGraph具体实现 1.效果一 1.1.创 ...

  9. 【Unity】动作游戏开发实战详细分析-06-技能系统设计

    [Unity]动作游戏开发实战详细分析-06-技能系统设计 基本思想 不同的技能可以设计为技能模版,当角色释放技能时,会通过模版ID将它进行实例化,这个实例技能类可以是一个挂载的MonoBehavio ...

最新文章

  1. 解决Mask RCNN训练时GPU内存溢出问题
  2. php ckey=6,ThinkPHP6 核心分析(十):事件
  3. 没有找到MFC80D.DLL,因此这个应用程序未能启动。重新安装应用程序可能会修复问题。...
  4. JavaScript 兼容新旧版chrome和firefox的桌面通知
  5. OpenFire源码学习之二十五:消息回执与离线消息(下)
  6. 工程打包是什么意思_承包工程是什么意思
  7. Oracle 估算数据库大小的方法
  8. 微机原理控制转移类指令
  9. css的一些常见问题处理方法
  10. (转)Spring Boot(八):RabbitMQ 详解
  11. mvc5 @html,如何在MVC 5中使用 HTML5 Viewer
  12. 基于JAVA+Servlet+JSP+MYSQL的问卷调查管理系统
  13. Chainmaker 查询当前区块高度
  14. 最详细的JavaScript高级教程(十一)正则表达式
  15. str.trim()去除空格
  16. 3种竞争力分析的简单途径
  17. 关于程序组团队建设的几点想法
  18. OpenCV每日函数 几何图像变换模块 (8) remap函数
  19. SVN SSL错误解决
  20. 为什么跑椭圆机比跑步更累

热门文章

  1. C语言获取norflash大小,NOR Flash 编程
  2. 【编程书库】入门+进阶C语言,这几本就够了!
  3. Android 安卓动画 属性动画 - 组合动画
  4. Mybatis动态sql是做什么的?都有哪些动态sql?简述一下动态sql的执行原理?
  5. 缺失MSVCR120.dll文件
  6. oracle 序列/自增ID
  7. Cubase Pro v10.5 + Halion+ Groove Agent SE WiN 免安装版宿主软件
  8. AC/DC电源的设计原理
  9. KVM切换器和VGA切换器的区别
  10. EPI晶片的表面微观粗糙度对湿化学处理的依赖性