【Unity基础】9.地形系统Terrain

2023-12-23 22:45

本文主要是介绍【Unity基础】9.地形系统Terrain,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【Unity基础】9.地形系统Terrain

        大家好,我是Lampard~~
        欢迎来到Unity基础系列博客,所学知识来自B站阿发老师~感谢 

(一)地形编辑器Terrain 

(1)创建地形

    游戏场景中大多数的山川河流地表地貌都是基于在地形上创建的,今天学习使用unity自带的地形编辑器。首先就是创建一个地形,我们右键create 3Dobject的时候,选择Terrain即可

    创建成功后,按F选中这个地形。可以看到这个地形看上去比较大,而且神奇的是它的锚点是处在它的边角上的而不是在中心,我们可以点击设置按钮来调整其大小

    和其他组件一样,我们可以调整它的position属性和以及对它重命名。那我们调整的地形数据会被保存在Terrain Data指向的地形文件中

(2)地形图层管理

    就像一个3d物体会有材质一样,地形的表面也会覆盖它的图层,实现如草地,土地,雪地,沙地等效果。那要在哪里设置呢?

    首先选中我们的地形对象,然后看到有5个按钮从左到右:分别是Create Neighbor Terrain创建附近的地形,Paint Terrain绘制地形,Paint Tree绘制树,Print Detail绘制细节,以及刚才我们调整大小时碰到的Terrain Setting地形设置

    那地形的图层信息,是需要选中第二个按钮,然后在下面的复选框中选中Paint Texture,在下面的属性信息中找到Terrain Layers就可以了,地表图层信息都是存放在那里

(3)创建地表图层对象

    我们可以在Assert目录下,右键create,在最下级名单就有一个名叫Terrain Layer的东西。选中它我们就可以给它设置纹理贴图和法线贴图等信息

     比如我就弄了一个草地,一个黄土地图层,然后拖过去地形编辑器那里就可以了,它支持多个地形

    然后我们看场景中的地形变成了草地的颜色,看来它默认是使用草地的地表图层

    那假设我想把这个地形设置为黄土地图层,或者部分地方设置成黄土地图层该怎么办呢?

    我们可以继续在Paint Terrain绘制地形菜单往下拉,下面有一个Brushes刷子的东西,隔壁有一堆奇形怪状的图案

    它的涵义很简单,就系一个刷子一样,你可以选中不同的Terrain Layer给这个画笔“染色”,然后选用形状透明度不同的图案,设置刷头来在这个地形系统中作画

    额,说得很复杂,操作一边就很简单了

    那如果一个手滑画错了想修正怎么办?很简单,第一个方法是ctrl Z回退,第二个方法,重新选取草地的图层再画一下就好啦

    我们选择完图案后,还可以在下方细化调整其大小和透明度,以实现想要的效果

(二)花草树木

(1)批量创建花草

    我们往草地上面用黄土地地表随意绘制一下,就有一种乡间小路的感觉了    

    接下来我们可以往上面种植一些花花草草。如果只是种植一株两株,那我们直接做成预制体模型拉到场景上就可以了

    但是如果我们想批量创建很多花草,让它分布自然,那么我们就可以利用地形编辑器的Print Detail功能来批量绘制

    首先我们先创建一些花草,我们首先在Details(绘制内容)增加我们的花草资源。点击Edit Details按钮,可以看到有Add texture和add mesh两个选择,我们添加纹理或者模型都可以

    我们随便找了几个花草图片加载进去,这样资源就准备好了

     而使用方式和地表绘制很像,我们先选择想要绘制的花草资源,在地形中直接刷刷刷就可以了(记得调整透明度和密度,不然密集恐惧症犯了....)

    而如果画多画密了怎么办?很简单只需要按住ctrl再刷几遍就可以把多画的删除了

    通过视觉的调整我们会发现,如果视图拉得比较远,那么unity会模拟视觉效果,把它们也同步变小,当达到一个阈值的时候就会不显示,减少内存损耗

    还有就是,无论我们旋转到什么角度,花草都会正面朝向我们,明明这些花草都是2d资源,有这种效果是因为地形编辑器也会对这些花草对象进行同步旋转

(2)种植树木

    在地形的编辑按钮中还有一个paint tree这个功能,当我们选中之后。可以把unity特殊的“树”模型添加到资源里面

     印象中我们在初学3d对象的时候,就看到果一个Tree的对象,那么我们可以先利用它看看效果

     和花草一样刷就可以了,哈哈哈,像君麻吕大招一样。

     太密集而且太丑了,调整一下刷子范围和密度,换一个正常的树木资源看看效果吧

(三)山河湖泊

(1)造山

    接下来我们要学习怎么样把地形给抬高和降低。在地形Print Terrain按钮中,选择二级选项Raise or Lower Terrain选项,就可以进行地势的增高或下沉的操作

    同样我们可以选择造山刷子,以及调整刷子的大小和高度

     我们可以随便刷几下看看效果,如果想叠加效果则在可以多点几次,如果想撤销那我们可以ctrl Z撤回

    如果我们想设置一个固定的山顶高度,那我们就可以进行setHeight操作,这样我们造的山就不会超过这个高度

(2)造湖

    造湖的过程用到的技术其实还是地势的升高和降低,我们想挖出一个湖,那么首先需要把地势升起来一个平台,因为本身Terrain的高度是0,不能直接往下挖

    接下来就是在这片升起来的地台上往下挖一个坑,我们的地台高度是10,那就挖一个5米的坑吧

    然后我们给它涂上我们的湖水纹理,用print texture功能画一下就好啦,看上去有点像就行啦hhhhhh

    好啦今天先到这里,下周进行更复杂一些的动画编辑操作~
    点赞,关注!!!

这篇关于【Unity基础】9.地形系统Terrain的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/529723

相关文章

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Python WebSockets 库从基础到实战使用举例

《PythonWebSockets库从基础到实战使用举例》WebSocket是一种全双工、持久化的网络通信协议,适用于需要低延迟的应用,如实时聊天、股票行情推送、在线协作、多人游戏等,本文给大家介... 目录1. 引言2. 为什么使用 WebSocket?3. 安装 WebSockets 库4. 使用 We

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式