第一人称漫游场景

地形漫游系统:

(自己绘制的GIF文件超过20MB放不上博客园。截取了几张图片)按键盘上的“上下左右”可以控制第一人称的漫游视角

资源包和项目源文件:传送门

自己做的项目可执行文件:传送门

感谢生命不息bug不止博客:传送门

学习Unity中Terrain地形属性

  

第一个按钮是让部分地方隆起或凹陷,按住shift刷就会凹陷,不按就是隆起

  

第二个按钮用来改变地形高度的

  Brush Size(笔刷大小)

  Opacity(透明度)

  Height(高度)

  

第三个按钮可以柔化地形的高度差

  

第四个按钮为地形放上纹理

  

第五个按钮添加树木

    

第六个按钮添加草地

实现过程

一、绘制地行

  点击最右边在按钮,设置地形在分辨率

  设置Terrain Width(地形宽度)设置为200,Terrain Length(地形长度)设置为200,Terrain Height(地形高度为60)

  在Terrain在Inspector试图中,将Settings下在Brush Size(笔刷大小)设置为100,Highth(高度)设置为5,同时单击Flatten,此时整个地形会向上抬高5个单位

  抬高地形目的:使得在地形上可以往下刷深度

  降低地形高度,用来绘制湖泊。在Terrain在Inspector试图中,单击Terrain下在,设置Brush Size设置笔刷大小,按住Shift按键,可以降低高度

  绘制地形在山脉。在Terrain在Inspector视图中,单击Terrain下在,设置Brush Size设置笔刷大小,单击左键可以拉高地形

  导入环境资源包Environment资源

  绘制地形在首层纹理,在Terrain在Inspector试图中,单击Terrain下在按钮,单击Edit Textures按钮,选择Add Texture,在弹出在Add Terrain Texture对话框中安吉Albedo下在Texture2D下在Select按钮,在弹出在Select Texture2D对话框中选择GRockyAlbedo,最后单击Add Terrain Texture对话框下在Add按钮

  绘制其他纹理,按照上一步骤,继续添加CliffAlbedoSpecular在纹理,然后在Textures下选择你该纹理

  添加树木

  点击按钮,点击下面的Edit Trees按钮,选择AddTree选项,在弹出的AddTree对话框中,单击 Tree Prefab,添加Palm_Desktop的树木

Brush Size 画笔大小 一次性添加多少颗树,要批量添加时调大
  Tree Density 树的密度 控制树的密度
  Tree Height 树的高度 后面有个Random的选项,是否随机的意思,选中后可以选一个范围高度,然后添加的树的高度在这个范围中随机高度 (现实中树怎么可能都一样高)
  Lock Width to Height 是否锁定树的宽度和高度(和图片一样,拉伸就不好看了)
  Random Tree Rotation 是否随机树的方向(树有的会长歪,随机歪向一个方向)

添加树木属性:

点击按钮,肯上一步一样,选择要添加草皮在属性

在Add Grass Texture中把Min Width设置为0.3,Max Width设置为0.5,Min Height设置为0.3,Max Height设置为0.5,

(考虑到性能消耗问题,unity默认设置,调试模式下草地在超出一定高度后就无法看到,但是最终作为游戏运行时是可以看到的)
 
 
 
 接下来添加水的效果,创造湖泊。在Water(Basic)文件下→ Prefabs其中有两个水效果的预设体,将WaterBasicDaytime拖到地形的大坑中,名字改为Water
 
通过缩放按钮 拉伸水的大小,填满整个大坑,然后通过移动按钮把水向上移动到合适的高度
 
 
  
二、导入外部资源
 
Assets → import package → custom package,然后找书带的学习素材,选chapter06中的house.unitypackage,单击 打开 按钮,弹出导入的对话框,单击 import 按钮,完成导入
 
 
 
  导入天空资源盒包。依次选择菜单栏在Assets->Import Package->Custom Package命令,选择Skyboxes.unitypackage
 
  添加天空盒。依次选择菜单栏中在Window->Lighting命令,在Lighting视图在Scene选项卡,单击Skybox右侧按钮,在弹出在Select Material对话框中选择Sunny1 Skybox
 
 
 
三、添加第一人称角色和控制添加角色和控制
 
  导入角色资源控制器资源包。依次选择菜单栏中的Assset->Import Package->Characters命令,在弹出Importing package对话框中右下角的Import按钮,导入资源到项目
 
  在Project视图中,依次打开文件夹Assets->Standard Assets->Characters,可以看到Characters文件夹下有FirstPersonCharacter第一人称控制器,如下图
 
  将FirstPersonCharacter->Perfabs文件夹中的RigidBodyFPSControlle预设体拖动到Scene视图中,便完成了第一人称控制器
 
 
 
 
 
 

Unity3D_(地形)创建基本场景的更多相关文章

  1. 转:修改ETM,用Ogre实现《天龙八部》地形与部分场景详解

    本文主要讲的是<天龙八部>游戏的地形和一部分场景的具体实现,使用C++, Ogre1.6,我摸索了段时间,可能方法用的并不是最好的,但好歹实现了.文章可能讲得有点罗嗦,很多简单的东西都讲了 ...

  2. css3创建3D场景

    浏览器本身是一个2维平面,对于3D的情况,实际上是增加了一个维度(深度),所以我们需要创建一个3D场景.这时浏览器不仅仅是一个平面了,更像是一个窗口,我们透过这个窗口去观察里面的三维世界.所谓的创建3 ...

  3. cocos3.2中如何创建一个场景

    1.可以将一些比较通用的东西放到Common.h中,这是一个.h文件,必须手动添加,且保证在classes目录里 #ifndef __COMMON_H__ #define __COMMON_H__ # ...

  4. NGUI使用教程(2) 使用NGUI创建2D场景而且加入标签和button

    1.创建2D场景 要使用NGUI创建2D场景,首先咱们必须新建一个项目,而且导入NGUI作为这个项目的插件,相信假设看过上一篇教程都知道怎么导入NGUI了,这里就不赘述,假设有疑问的能够去看上一篇教程 ...

  5. [Bullet3]创建世界(场景)及常见函数

    创建世界(场景)及常见函数 官方文档:http://bulletphysics.org 开源代码:https://github.com/bulletphysics/bullet3/releases A ...

  6. Three.js入门篇(一)创建一个场景

    上一面讲述了向场景中添加物体对象.这一篇准备把每个功能点细细的讲述一遍,一方面是为了加深自己的理解.另一方面希望能够 帮助到有需要的人. 一.在学习WEBGL的时候,你应该先了解要创建一个WebGL程 ...

  7. quick-cocos2d-x游戏开发【2】——项目结构分析、创建新场景

    创建完一个新项目之后,我们能够简单的看一看这个项目的文件组成,有这么一个文件层次结构 几个proj.*目录就不用说了,是相应的平台的解决方式,res专门存放我们的游戏资源.scripts存放我们的lu ...

  8. Unity3D_异步加载场景(进度条)

    创建两个场景:现在的场景“NowScene”,要加载的场景“LoadScene”: “NowScene”如图所示,“LoadScene”任意: 创建脚本“AsyncLoadScene”,复制如下代码, ...

  9. Cocos2d-x 3.0 创建一个场景,并设置现场的时候,项目开始执行上主动

    头 #ifndef __TEST_H__ #define __TEST_H__ #include "cocos2d.h" USING_NS_CC; class Test : pub ...

随机推荐

  1. 关于__name__=='__main__'的理解

    一.总的来说,如果__name__=='__main__'成立,表示当前模块就是主程序, 如果__name__=='__main__'不成立,表示当前模块是被导入到某个模块中的,而此时__name__ ...

  2. Nginx负载均衡调度算法

    Nginx支持的负载均衡调度算法方式如下: 1. weight轮询(默认) 接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,nginx会自动将该服务器剔除出队列 ...

  3. springboot页面模板thymeleaf的简单用法

    thymeleaf基础语法: 变量输出与字符串操作: ​ th:text 表示在页面输出值 ​ th:value 表示将一个值放入input标签的value中 判断字符串是否为空: ​ thymele ...

  4. vue组件之子组件和父组件

    在看官网和学习的过程中,有些不明确子组件和父组件的定义,为了方便后期学习和理解去网站上搜索了一下相关的解释 1.使用的地方是父组件,定义的地方是子组件,虽然他们是同一个组件 2.Vue.compone ...

  5. kafka核心原理总结

    新霸哥发现在新的技术发展时代,消息中间件也越来越受重视,很多的企业在招聘的过程中着重强调能够熟练使用消息中间件,所有做为一个软件开发爱好者,新霸哥在此提醒广大的软件开发朋友有时间多学习. 消息中间件利 ...

  6. 31C3 CTF web关writeup

    0x00 背景 31c3 CTF 还是很人性化的,比赛结束了之后还可以玩.看题解做出了当时不会做的题目,写了一个writeup. 英文的题解可以看这:https://github.com/ctfs/w ...

  7. RHEL6中LVM逻辑卷管理

    1.LVM 基本术语   物理卷(physical volume):物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘.   卷组(Volume Group):卷组建立 ...

  8. tornada-基础

    回想Django的部署方式 以Django为代表的python web应用部署时采用wsgi协议与服务器对接(被服务器托管),而这类服务器通常都是基于多线程的,也就是说每一个网络请求服务器都会有一个对 ...

  9. 关于cli打包至服务器出现的BUG(样式错乱,路径出错)解决方案

    很久没来博客园了,今天给大家带来两个硬货bug,前端大牛可能不觉得是啥,但是对于没碰到过这问题的小菜鸟我来说还是很不错的 1.npm run build 至服务端的时候出现路径报错解决方案 ①.本地测 ...

  10. npoi c#

    没有安装excel docx的情况下 操作excel docx