游戏地形

在游戏的世界中,必然会有非常多丰富多彩的游戏元素融合当中。

它们种类繁多。作用也不大同样。一般对于游戏元素可分为两种:经经常使用。不经经常使用。经常使用的元素是游戏中比較重要的元素。一般须要使用脚本来实现某些特殊功能。比方:玩家控制的主角对象,须要攻击的敌人等。

因此经常使用的元素直接影响游戏的执行,而不常有的元素。比方说游戏里的天空,云朵等。不影响游戏的主线。只提升游戏的总体效果。

创建地形

在3D游戏里,常常会出现起伏的地形。

本文变总结回想下怎样在游戏里创建游戏地形。

首先在导航菜单条里选择Terrain----Create Terrain创建一个游戏地形。出现入选图:

(经过我旋转拉近后的,方便更加直观的观看)

地形參数

地形參数包含地形的宽度,高度,长度,分辨率,高度图等。创建完地形后。便能够随意的改动它们。在导航菜单里选择Terrain----Set Resolution后,弹出Heightmap resoluton窗体。直接输入改动就可以。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzI4OTE4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

简单的介绍下Heightmap resoluton窗体中的參数:

Terrain Width:地形总宽度

Terrain Height:地形总高度

Terrain Length:地形总长度

Heightmap resoluton:地形高度图的分辨率

Detail Resolution:细节分辨率,主要用于地形上的草或者其它模型。其数值越高,显示效果越好。当然同一时候也须要越高的机器配置。

Detail Resolution per patch:细节分辨率补丁

Control Texture Resolution :控制贴图分辨率

Base Texture Resolution :相对贴图分辨率

编辑地形

到如今为止,我们的地形还仅仅是一个巨大的平面。

要实现起伏的效果,首先在hierarchy视图中,选择Terrain 。此时会在右側的inspector视图中来编辑地形。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzI4OTE4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="262" height="600" alt="">

在地形菜单中有起个button:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzI4OTE4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

他们的含义分别为:编辑地形高度。编辑地形特定高度,平滑过度地形。地形贴图,加入树模型,加入草与网格模型,其它设置。

接着以下便是地形画笔:

brush size:画笔宽度取值范围

Opacity:画笔高度的取值范围

选择地形菜单和画笔后,便能够编辑地形的起伏了。

只是由于地形贴图默认是灰色,故会很的难看。

在地形菜单中点击第二个button(编辑地形特定高度),此时打开设置地形特定高度页面。与先前的页面一样,仅仅是多了一个Height:

在编辑地形高度页面中,Opacity:是最大高度。而在编辑特定高度页面,Height才是最大高度。比方在编辑特定高度页面,Opacity的值是100。而Height的值是80,那么地形最高为80

例如以下图。在地形菜单中点击第三个button(平滑过渡地形),然后选择一个适合的画笔,接着就能够平滑过度地形了。

平滑后的地形图:

每当创建完地形后,系统都会自己主动的将Terrain  Collider(地形碰撞)组件加入到地形中。该组件能够让地形感应与其它物体之间的碰撞。

给地形表皮一个物理材质后。地形上的物体将依据设置的碰撞參数而发生碰撞,比方说:弹力,动力。摩擦力等。

Material:物理材质,设置模型与地形碰撞后的物理摩擦效果

is trigger:是否开启地形碰撞

Terrain  data:地形资源。连接project视图中的地形文件

create tree colliders:是否创建树木碰撞

地形贴图

系统默认的灰色地形实在是不可恭维。

在实际中。为了让地形看起来更加美观。unity提供了地形标准资源包。首先我们须要将地形资源包导入当前的工程中。在project视图中点击鼠标右键,选择import-----Terrain  Assets。

导入后。学习怎么给地形加入新的贴图。首先在地形菜单条中点击第四个button(地形贴图),可发现眼下在Textures列表中没有不论什么地形贴图。点击右下角edit---textures(编辑贴图)。将弹出一个选择列表。

在选择列表中。选择add Textures选项。将会出现下图左边窗体。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzI4OTE4OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

先简要说明下各參数意义:

texture:在资源目录中选择一张地形贴图

normal map:在资源目录中选择一张正常地形贴图

size x:贴图x轴宽度

size y:贴图y轴宽度

offset x:贴图x轴偏移量

offset y:贴图y轴偏移量

点击texture中的select,将弹出select texture2D窗体,该页面全部的贴图文件都源于project视图中的目录。

然后在select texture2D窗体中选择随意贴图双击,然后在add terrain Textures窗体中右下角点击add就可以.

在加入地形贴图后,就能够渲染贴图了。首先选择一个渲染的贴图目录。然后选择一个渲染笔。最后直接在scene视图中渲染即可了。

【Unity 3D】学习笔记三十:游戏元素——游戏地形的更多相关文章

  1. 【Unity 3D】学习笔记三十五:游戏实例——摄像机切换镜头

    摄像机切换镜头 在游戏中常常会切换摄像机来观察某一个游戏对象,能够说.在3D游戏开发中,摄像头的切换是不可或缺的. 这次我们学习总结下摄像机怎么切换镜头. 代码: private var Camera ...

  2. angular学习笔记(三十)-指令(10)-require和controller

    本篇介绍指令的最后两个属性,require和controller 当一个指令需要和父元素指令进行通信的时候,它们就会用到这两个属性,什么意思还是要看栗子: html: <outer‐direct ...

  3. angular学习笔记(三十)-指令(7)-compile和link(2)

    继续上一篇:angular学习笔记(三十)-指令(7)-compile和link(1) 上一篇讲了compile函数的基本概念,接下来详细讲解compile和link的执行顺序. 看一段三个指令嵌套的 ...

  4. angular学习笔记(三十)-指令(7)-compile和link(1)

    这篇主要讲解指令中的compile,以及它和link的微妙的关系. link函数在之前已经讲过了,而compile函数,它和link函数是不能共存的,如果定义了compile属性又定义link属性,那 ...

  5. angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令

    在angular学习笔记(三十)-指令(4)-transclude文章的末尾提到了,如果在指令中需要反复使用被嵌套的那一坨,需要使用transclude()方法. 在angular学习笔记(三十)-指 ...

  6. angular学习笔记(三十)-指令(5)-link

    这篇主要介绍angular指令中的link属性: link:function(scope,iEle,iAttrs,ctrl,linker){ .... } link属性值为一个函数,这个函数有五个参数 ...

  7. angular学习笔记(三十)-指令(2)-restrice,replace,template

    本篇主要讲解指令中的 restrict属性, replace属性, template属性 这三个属性 一. restrict: 字符串.定义指令在视图中的使用方式,一共有四种使用方式: 1. 元素: ...

  8. angular学习笔记(三十)-指令(1)-概述

    之前在 angular学习笔记(十九)-指令修改dom 里面已经简单的提到了angular中的指令,现在来详细的介绍 '指令' 一.指令的创建: dirAppModule.directive('dir ...

  9. 【Unity 3D】学习笔记三十八:角色控制器

    角色控制器 在unity中,已经帮我们实现的上下左右跳等动作,并将他们封装成了角色控制器.角色控制器保存在unity标准资源包中,能够说是很的强大.能够模拟第一或者第三人称视角.不受刚体的限制,很适用 ...

随机推荐

  1. 一、Ubuntu 简介

    Ubuntu 是一个Linux 系统 Apt-Get apt-get 命令是一个强大的命令行工具,用于同 Ubuntu 的 Advanced Packaging Tool (APT) 一起执行诸如安装 ...

  2. Codeforces 746G(构造)

                                                                                                      G. ...

  3. facebook chat 【转】

    Facebook Chat, offered a nice set of software engineering challenges: Real-time presence notificatio ...

  4. JSOI 2009 BZOJ 1444 有趣的游戏

    题面 题目描述 小阳阳发明了一个有趣的游戏:有n个玩家,每一个玩家均有一个长度为 l 的字母序列,任何两个玩家的字母序列不同.共有m种不同的字母,所有的字母序列都由这m种字母构成,为了方便,我们取大写 ...

  5. (持续集成)win7上部署Jenkins+MSBuild+Svn+SonarQube+SonarQube Scanner for MSBuild (第二发)

    这一篇进入实战,走起.... 登录jenkins,如下图 点击上图中的“新建”按钮,进入下图 输入项目名称,选择“构建一个自由风格的软件项目”即可,点击“ok”,跳转到下图 svn源代码管理(选择代码 ...

  6. Android 控件架构与自定义控件详解

    架构: PhoneWindow 将一个 DecorView 设置为整个应用窗口的根 View,这里面所有 View 的监听事件,都通过 WindowManagerService 来接收.DecorVi ...

  7. SilverLight.3-Validation:二、银光验证。TheLabel、TheDescriptionViewer和TheValidationSummary

    ylbtech-SilverLight.3-DataControls_BetterDataFroms:二.银光验证.TheLabel.TheDescriptionViewer和TheValidatio ...

  8. js 数组去重复

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 对国外某hotel的内网域简单渗透

    Penetration Testing不单单是一个博客,更热衷于技术分享的平台. 本文将讲述对国外某一hotel的渗透测试,让更多的人安全意识得到提高,有攻才有防,防得在好,也有疏忽的地方,这就是为啥 ...

  10. PHP执行linux系统命令

    本文是第一篇,讲述如何在PHP中执行系统命令从而实现一些特殊的目的,比如监控服务器负载,重启MySQL.更新SVN.重启Apache等.第二篇<PHP监控linux服务器负载>:http: ...