Unity之地形的构建

PS:公司没活干,好无聊偷偷摸鱼学Unity,害怕自己学完之后忘记,写下这一篇博客

先来看一下效果图:有山有水有树有草地


创建一个新的Unity3D项目

 这里要用到Unity官方的免费资源包(现在好像已经下架了百度网盘 请输入提取码) 

资源包下载完成之后我们导入新建好的Unity项目:

在项目这一栏里点击鼠标右键 ——> 导入包 ——> 自定义包,然后选择你下载资源包的路径就导入进来了。(这是汉化包的教程要对应你Unity版本进行安装unity3D【全版本】设置中文_unitu3d中文-CSDN博客)

首先创建一个地形:在层级这一栏里点击鼠标右键可以创建各种实体,这里选择地形

 在创建好的地形中点击选中它然后在检查器中会显示出对地形的操作和组件

对地形的绘制主要由这5个按钮来实现: 

一、

第一个按钮是创建相邻地形,顾名思义就是在你已经创建好的地形旁边继续添加地形......目前来说一个地形这个已经够练手了

二、

第二个按钮是绘制地形:这一个操作栏下边有六个选项,我们这里先看四个。

2.1

先来选择第一个  ——  Raise or Lower Terrain(升高或降低地形) ——  就是拿画笔在地形上绘制山脉和盆地;升高就是山脉,降低就是盆地,先升高后降低就是......没变(手动狗头) (升高直接鼠标左键绘制,降低需要按住Shift+鼠标左键来绘制)

注:这里的降低必须在地形有原有高度的基础上来降低

下边还有笔刷、笔画大小、不透明度

 尽情绘制吧:

2.2

来看第二个:Paint Holes  ——  它的主要功能是在绘制好的山上进行山洞的绘制,现在的绘制只是单纯的给山戳个洞,想要变得更好看你还需要山洞的资源包模型(然鹅我现在也没有^_^)

2.3

第三个:Paint Texture我们稍等再说。先说第四个:Set Height

你这里设置了想要的高度再去绘制的时候所绘制的高度就不会超过你所设定的高度,效果如下所示:

这里还有一个测量高度的操作,在你的地形里按住 Shift+鼠标点击 会获取你当前所点击地形的高度, 然后数值就会显示在高度里边。

通过这个Set Height设定你还可以为地形创建初始厚度。在高度里输入100,点击 展平瓦片 ,这样就设定了100米厚的地形,然后你就可以挖100米深的盆地了,这个和上面的  “”  相对应

 展平瓦片  只会展平一块地形,如果你还创建了其他相邻的地形 点击 全部展平    那其他地形也会展平。


如果你想要你所绘制出来的山脉盆地表面平滑一些,那么  Smooth Height  可以帮到你

 勾选后设置好笔刷等属性值去抹平就完事了 

2.4

绘制好你想要的效果后这下我们来看 Paint Texture ,给地形装上纹理

点击编辑地形层  ——  创建层,从我们导入的资源包中选择纹理,然后给地形绘制上吧

我这里用的三个地形层的素材名称是:NewLayer 3、NewLayer 4、NewLayer 6

这里地形层可以添加好几个,添加的第一个地形层会自动给整个地形加上该地形层,其他地形层需要手动绘制;这里同样可以调节画笔大小和不透明度。

现在离效果图只差树和草了我们一起说完:主要是通过这两个按钮下边的功能实现的。

操作方法和给地形加纹理类似,首先要导入树和草的资源素材。 树的素材名:Conifer_Desktop

编辑树 ——》  添加树  ——》 选择树素材

 大量放置树  这个按钮可以设定树的数量直接放置,此外还有树的密度、树高和随机性等属性

 草的素材名是:GrassFrond02AlbedoAlpha

编辑细节 ——》  添加草纹理  ——》选择草素材

草离近了才能显示出来  ——  真.编辑细节。

绘制好树和草就能达到效果图所展示的内容了    

下一步要去学习组件和Unity脚本的编写了,拜拜┏(^0^)┛ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/281724.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis分页插件之PageHelper生效and失效原理解析

文章目录 前言整合PageHelperPageHelper生效原理PageHelper的分页参数和线程绑定核心拦截逻辑生成分页SQLdialect.afterAll() PageHelper失效原理分页失效案例分页失效原理总结 Mybatis拦截器系列文章:从零开始的 MyBatis 拦截器之旅:实战经验分享 构建自…

S32K312使用ITCM向FLASH代码区写入数据

使用C40_IP的系列方法向FLASH代码区写入数据时,程序会卡死在读取写操作的状态C40_Ip_MainInterfaceWriteStatus()这个方法中。本文主要介绍S32K312通过ITCM的方式,通过C40_IP的方法向FLASH代码区成功写入数据的方法和步骤。 首先,验证一下C4…

macos下php 5.6 7.0 7.4 8.0 8.3 8.4全版本PHP开发环境安装方法

在macos中如果使用brew 官方默认的core tap 只可以安装官方最新的稳定版PHP, 如果想要安装 php 5.6 或者 php 8.4版本的PHP就需要使用第三方的tap , 这里分享一个比较全面的brew tap shivammathur/php 这个tap里面包含了从php5.6到最新版php8.4的所有可用最新版本PHP, 而且是同…

python大于等于小于等于,python大于等于怎么写

大家好,小编为大家解答python中大于等于且小于等于的问题。很多人还不知道python大于号小于号如何运用,现在让我们一起来看看吧! 大家好,小编来为大家解答以下问题,python中大于并小于一个数代码,python 大…

数据结构【线性表篇】(二)

数据结构【线性表篇】(二) 文章目录 数据结构【线性表篇】(二)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件? 目录一、单链表(一)、单链表的定义(二)、单链表的建立(三)、单链表的插入删除(四)、单链表的查找 二、主函…

springBoot2.3-基本介绍及入门案例

本次学习雷丰阳springBoot(2.3版本)。建议先修ssm 一、SpringBoot基本介绍 springBoot是当今最为流行的java开发框架。 1、springBoot的底层是spring, 因此继承了spring的粘合其他框架的能力。 2、本质上还是其他框架包括spring在工作 , springBoot起到一个整合其他…

LeetCode刷题--- 黄金矿工

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​​http://t.csdnimg.cn/hKh2l 前言:这个专栏主要讲述…

基于SSM的学生信息管理系统

基于SSM的学生信息管理系统资源-CSDN文库 项目介绍 学生管理系统是我从自己学校的综合信息平台得到灵感,于是使用学习过的Spring、SpringMVC、Mybatis框架LayUI完成了这么一套系统。 项目整体难度不大,部署简单,界面友好,代码结…

免费API-JSONPlaceholder使用手册

官方使用指南快速索引>>点这里 快速导览: 什么是JSONPlaceholder?有啥用?如何使用JSONPlaceholder? 关于“增”关于“改”关于“查”关于“删”关于“分页查”关于“根据ID查多个” 尝试自己搭一个?扩展的可能? 什么是JSONPlaceho…

机器学习(一) -- 概述

系列文章目录 机器学习(一) -- 概述 机器学习(二) -- 数据预处理 未完待续…… 目录 系列文章目录 前言 一、机器学习定义(是什么) 二、机器学习的应用(能做什么) 三、***机器…

ArkUI动画概述

目录 1、按照页面分类 2、按照功能分类 3、显示动画 4、属性动画 动画的原理是在一个时间段内,多次改变UI外观,由于人眼会产生视觉暂留,所以最终看到的就是一个“连续”的动画。UI的一次改变称为一个动画帧,对应一次屏幕刷新&a…

图像分割实战-系列教程2:Unet系列算法(Unet、Unet++、Unet+++、网络架构、损失计算方法)

图像分割实战-系列教程 总目录 语义分割与实例分割概述 Unet系列算法 1、Unet网络 1.1 概述 整体结构:概述就是编码解码过程简单但是很实用,应用广起初是做医学方向,现在也是 虽然用的不是很多,在16年特别火,在医学…

GRNdb:解码不同人类和小鼠条件下的基因调控网络

GRNdb:解码不同人类和小鼠条件下的基因调控网络 摘要introduction数据收集和处理Single-cell and bulk RNA-seq data collection and processing 单细胞和bulk RNA-seq 数据收集和处理Cell cluster identification for scRNA-seq datasets (scRNA-seq 数…

在 Linux 中使用 cat 命令

cat 命令用于打印文本文件的文件内容。至少,大多数 Linux 用户都是这么做的,而且没有什么问题。 cat 实际上代表 “连接(concatenate)”,创建它是为了 合并文本文件。但只要有一个参数,它就会打印文件内容。因此,它是用…

vscode中默认shell选择

terminal.integrated.defaultProfile.linux在vs的Preference的Settings里面搜索terminal.integrated.defaultProfile.linux,默认的应该是null,将其修改为bash即可。 linux———/bin/sh、 /bin/bash、 /bin/dash的区别

[设计模式 Go实现] 创建型~抽象工厂模式

抽象工厂模式用于生成产品族的工厂,所生成的对象是有关联的。 如果抽象工厂退化成生成的对象无关联则成为工厂函数模式。 比如本例子中使用RDB和XML存储订单信息,抽象工厂分别能生成相关的主订单信息和订单详情信息。 如果业务逻辑中需要替换使用的时候…

基于JWT的用户token验证

1. 基于session的用户验证 2. 基于token的用户身份验证 3. jwt jwt代码实现方式 1. 导包 <dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.18.2</version> </dependency> 2. 在登录…

golang锁源码【只有关键逻辑】

条件锁 type Cond struct {L Lockernotify notifyList } type notifyList struct {wait uint32 //表示当前 Wait 的最大 ticket 值notify uint32 //表示目前已唤醒的 goroutine 的 ticket 的最大值lock uintptr // key field of the mutexhead unsafe.Pointer //链表头…

Redis经典五大类型源码及底层实现(一)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理、分布式技术原理、数据库技术&#x1f525;如果感觉博主的文章还不错的…

Excel模板填充:从minio上获取模板使用easyExcel填充

最近工作中有个excel导出的功能&#xff0c;要求导出的模板和客户提供的模板一致&#xff0c;而客户提供的模板有着复杂的表头和独特列表风格&#xff0c;像以往使用poi去画是非常耗时间的&#xff0c;比如需要考虑字体大小&#xff0c;单元格合并&#xff0c;单元格的格式等问…