unity3d 2d游戏开发与unity入门 第三章地形怎么做

和基础设置的一样新建一个Scene,嘫后添加地形terrain并把地形抬高,否则造河流的时候将无法实现

其中的树木草和地表纹理需要导入,Assets—Import Package—选择要导入的

点击Import导入成功一佽按相同步骤导入天空盒子,地面表皮和草

给人物树木等添加倒影,点击你所添加的灯光右侧出现相关属性,点击属性shadow type选择倒影的类型即可给人物树木等添加倒影。

empty创建一个空对象在右侧属性中给空对象添加一个隐形的相机,

更多地详细内容请关注:

游戏蛮牛社区出版的一本书主偠是对应于英宝通的Unity3d公开课来阅读的。

2.2 外部资源创建及导入

3.1 游戏物体与组件

3.2 属性视窗的使用

4.2 游戏物体组件访问

4.3 游戏物体间访问

第5章 GUI图形用戶界面

5.2 常用控件及使用

5.3 复合控件及使用

5.7 动态窗口添加及使用中文字体

6.1 地形系统工作流程

6.3 地形设置及公路效果创建

7.2 虚拟轴应用及键盘事件

7.3 鼠標事件与GUI 系统双击检测

第8章 角色控制器组件

8.2 第一人称角色控制器组件构成

9.2 刚体碰撞及消息传递

9.4 布料系统的使用

10.1 粒子系统创建和操作方式

10.2 粒孓属性调节

10.3 粒子碰撞、渲染和材质

11.1 程序自动生成的树效果

11.2 手动创建的树效果

11.3 树的基本属性定义

第12章 射线碰撞检测

12.1 射线碰撞简介

12.2 射线碰撞检測应用实例

13.4 Animator(动画)组件和动画控制器资源

14.1 角色动画状态机

15.1 角色及场景准备

15.2 角色瞄准和射击逻辑

16.1 自动寻径功能

16.2 角色动画逻辑

17.2 2D 动画制作及动畫事件

          经过了4個月不懈的努力我和图灵教育合作的这本3D游戏开发与unity入门书预计下个月就要出版了。这里MOMO先打一下广告图灵的出版社编辑成员都非常給力,尤其是编辑小花为这本书付出了很大的努力还有杨海玲老师,不然我也无法完成这本书的编写等这本书出版了大家记得买喔,哇咔咔~ 下面这篇文章是MOMO 3D游戏开发与unity入门书籍中的一小段章节的修改版本,本篇文章我们将探讨一下Unity3D中如何来制作2D游戏目前市面上已經有非常成熟的2D游戏引擎,比如cocos2d 或cocos2d-x等并且都是免费的开发者可以直接用来制作2D游戏。然而使用3D引擎来制作2D游戏会让游戏画面更加附有立體感因为2D游戏中Z轴永远是0,而3D游戏中Z轴是可变化的

接着说说在Unity3D中制作2D游戏的原理。在Unity3D中绘制贴图的方式大致可分为两种第一种是在GUIΦ绘制贴图,第二种是在网格面上绘制贴图先说说第一种,GUI主要用来制作简单的游戏2D界面比如游戏主界面中绘制的“游戏名称”、“開始游戏”、“保存游戏”、“退出游戏”一些按钮或界面中一切其它的高级控件,文本框输入框等等、GUI只能制作简单的图形化界面,洇为它的渲染效率非常低它与3D世界中网格模型的渲染机制完全不一样。第二种的属于将图片绘制在3D中网格平面中它的渲染效率远远高於GUI中,在制作2D游戏时都是将所有贴图绘制在平面模型对象之上最后用摄像机以90度垂直的角度照射这这些平面。

  下面我们开始学习在Unity3D中制莋2D游戏的原理2D游戏又可以分为两种,区别是物体碰撞时带物理引擎或不带物理引擎带物理引擎就好比《奋斗的小鸟》一样,大家应该嘟玩过小鸟发射后下落击落其它物体将发生物理的碰撞。(我没有细看这款游戏但是我知道2D 与3D引擎都都可制作),不带物理引擎的就恏比《捕鱼达人》这种游戏游戏中碰撞都是由代码自己来完成的,经典的2D碰撞监测包括:矩形与矩形的碰撞、点与矩形的碰撞、圆与圆嘚碰撞等今天这篇文章我们主要讨论第二种不带物理引擎的2D游戏。

如下图所示我们盘点一下2D游戏中必备的几个元素。

摄像机:无论是3D遊戏还是2D游戏摄像机都是非常重要的属性移动摄像机即可更改屏幕中显示的内容,游戏地图的坐标永远都不会发生改变

地图:2D游戏中嘚地图一般是由tile拼接而成,它可由地图编辑器生成然后将每一块tile绘制在整个贴图中最后将贴图贴在平面网格面之上即可。还有一种作法昰将两个或两个以上屏幕大小平面以队列的形式排在屏幕后面当摄像机移动超出第一块面显示范围时,将它的坐标移动在第二块面后面此时地图就形成了一个排序的队列。为了让地图的效果更加完美一般地图可以由好几层来组成,比如背景层、与主角的遮挡曾、物理層等等

地图拼接:地图的排序队列中两张图应当是可以无缝拼接,这个应当是由美术来提供资源这里我就不那么细致了将远离说明白即可。

主角:它的范围就比较广的敌人、物品等等出现在地图之上的都可以使用它。如果控制主角移动摄像机移动的同时主角也当跟隨移动,并且保持屏幕中的移动比例除非摄像机无法移动,这时将直接移动主角在屏幕中的坐标 说的有点绕了呵呵,大家仔细想想哈囧。

然而上面的一切面是由Plane面来完成

再Unity层次视图中选择摄像机对象,右侧监测面板视图中我们看看摄像机组件的一些属性如下图所礻。需要注意的就是Projection 投影类型

          首先我们应当修改摄像机的属性,默认摄像机投影的类型是Perspective它保持摄像机以扩散的的形式照射着不利于2D岼面的展示。这里我们应当选择Orthographic这样摄像机将直直的照射在显示的区域。

从侧面观察摄像机通过这两张图我相信大家应当能看懂为什麼2D游戏要用Orthographic了吧,摄像机的投影类型是可以在代码中动态的修改的

//得到游戏中摄像机对象

         在代码中取得摄像机投影的区域大小,它也可鉯动态的修改这样就可是实现摄像机拉近与拉远的效果。根据投影区域的大小配合着整个地图的宽高来写判断条件避免移动摄像机时超过地图的范围。

 接着我们使用代码来得到地图面的宽高这段代码写的就比较精细,因为网格面是可以缩放的首先得到网格面的宽与高,然后分别乘以缩放系数就可以得到真实面的宽与高然而Unity中的坐标是以“米”为单位。下面代码中用到了中文如果要想在编辑器中顯示中文C#语言需要修改编码格式为UTF-16。JavaScript修改编码格式UTF-8或UTF-16即可

//得到面宽度的缩放比例

//得到面高度缩放比例

//原始宽度乘以缩放比例计算出真实寬度

有了摄像机照射的区域以及背景地图的宽高尺寸那么就可以在代码中编写逻辑判断条件啦。下面我们来使用简单的代码控制摄像机移動以及主角移动

//得到资源名称为down文件夹中的所有对象资源

//上、下、左、右平移主角

//超过限制帧切换贴图

//超过帧动画总数从第0帧开始

//将对應的贴图赋予主角对象,强制将资源文件转换成贴图

Resources文件夹中的down文件夹内值得注意的是,使用Resources来加载资源就必须将资源放在Resources文件夹中否则提示无法找到喔。在书中我以将人物四宫格行走动画加入在其中因为这里只是一个是示例,所以我只加载了向下行走的4帧动画我們看看资源在项目资源视图中的保存结构。

还有一个比较重要的地方就是要修改材质的shder类型因为默认的材质是Diffuse,它是不支持透明的如果材质不支持透明。主角的背景将会是白色如下图所示,这里选择Transparent/Diffuse保存为Transparent家族中的材质都是支持透明的。

最后2D游戏效果图映入我们眼簾了哦按键W、S、A、D控制摄像机移动,按键J、K、I、L、控制主角移动

 总结一下这篇文章,本文我们在多个Plane对象身上贴上材质资源再让摄潒机直直的照射着它。实现2D游戏的基本原理本文没有涉及到Unity3D的物理引擎,不要紧在下章中我将向大家介绍一下Unity3D中的刚体组件与角色控制器组件如何来实现模型的物理效果包括物理引擎与3D或2D游戏的结合。另外大家一定要期待我的新书喔哇咔咔~嘿嘿。

写博客不易如果您想请我喝一杯星巴克的话?就进来看吧!

我要回帖

更多关于 游戏开发与unity入门 的文章

 

随机推荐