使用Unity制作游戏关卡的教程(二)
转自:http://gamerboom.com/archives/75554
作者:by Matthias Zarzecki
本文是“使用Unity制作《The Fork Of Truth》的关卡”系列的第二部分。
在第一部分中,我们介绍了如何使用Unity的Unity Terrain制作基本场景。在这一部分,我将继续介绍场景对象以及它们的设置。
Benjamin(from pladinstudios)
基本设置
制作关卡有两种途径:一是使用模块化贴图系统(想象一下“乐高积木”);二是纯手动制作。《Momonga – Pinball Adventures》和《Nikko RC Racer》走的是第二条路线。手动制作虽然具有很大的自由度,但太费时间,这就限制了游戏的规模;另外,手动制作关卡的过程艰难而费时,进而限制迭代和实验的次数。
momonga_011(from matthewongamedesign)
Nikko RC Racer(from from matthewongamedesign)
而模块化贴图就不同了。使用这种方法不需要手动制作资源,而是先制作一系列“积木块”,然后再把它们组合起来。你可以使用一小堆积木做出各种各样的东西。这种方法的最大优势也许是,允许是关卡制作过程变成一种快速构建-测试-改进的循环。设置(或改变)整个场景是很容易很迅速的,这就使得短时间内测试一个关卡的不同变体成为可能。
贴图
游戏中的一切物品(建筑、木箱、围栏)都叫作“对象”。各个对象都必须能够轻易地融入游戏,并且它的大小对齐到贴图。因为所有对象都是这样设置大小的,所以游戏中的所有对象都彼此保持对齐。事实上,一个对象就是Autodesk 3DS Max中的一个3D 模型。所有对象都有自己的文件,其中包含它的一切属性。下图就是一个对象:
model_watchtower(from from matthewongamedesign)
这种瞭望塔在关卡中多次出现,可以与其他对象如围墙、木箱、木桶等一起使用。注意,这个对象的轴点是在它的底部。这样设置轴点便于把物品放置到地面,因为它们的零点也已经在那里。我们把这个对象保存在Unity中的一个名称为“模型”的文体夹中。当使用Unity制作关卡时,对象可以自动导入到Unity中。当然,上图中的瞭望塔只是一个简单的草样,还不是最终版。它已经有基本的大小和形状了,但我们仍然要制作最后的3D模型。我们已经可以把这样的模型布置到关卡中了,也就是把3D模型转化成Unity的预制件。这些“预制的对象”就是我们用来构建关卡几何的“积木块”。
我们用Merlin’s Prefab Lab(游戏邦注:这是一个Unity插件,可以自动生成所有3D模型的预制件)自动生成预制件。当你改变源3D模型时,Prefab Lab会更新预制件内的模型,同时保留相关性。当预制件更新时,该场景中的所有对象也将升级。
命名规范
团队的所有成员都可以使用、修改和制作对象。这就要求所有对象都有清楚的名称,这样才不至于在庞大的对象库中寻找某个对象时感到困惑。命名对象的方式有很多种,我们的要求是,允许我们在项目文件夹中寻找对象。无论你使用什么规范,请保证对所有对象都始终统一地使用它。
举一个例子:
“Tree Broad Leaved 01 3×3 Green”
上述命名的结构是“对象-修饰词-变体顺序号-大小-视觉特性”,首字母大写,单词间空一格。“对象”是指物品类别(游戏邦注:例如“树木”、“岩石”、“房屋”);“修饰词”是对物品的主要形容,(如“大”房子);修饰词后跟着变体顺序号,也就是告诉你它是同一个对象的第几个变体(如,2表示2个不同的“岩石 大”);“大小”是告诉我们该对象的贴图是多大,这样我们不需要把它添加到场景中就能立即知道它有多大了。这种命名组合把所有相关的对象放在一起,这样我们就能轻易地在对象库中寻找某个对象。
放置对象
要在场景中放置对象,首先打开项目文件夹中的预制件,然后放进场景中:
editor_01(from from matthewongamedesign)
editor_02(from from matthewongamedesign)
就是这样!对其他物品进行同样的操作,关卡很快就填满了。然后简单地调整对象的位置、旋转它们,直到得到满意的效果。
editor_03(from from matthewongamedesign)
组合对象
连续放置对象也是相当实用的。因为所有对象都已经做成“网格”对齐的样子,所以可以轻易地对齐在一起。我们可以非常迅速地制作出农田等场景:
field_01(from from matthewongamedesign)
按下Ctrl键同时移动物品,把它填进网格里。对齐距离可以在Snap Settings(Edit -> Snap Settings)中调整。这对于制作围栏特别实用,只要几秒就可以做出很长的围栏:
fence_01(from from matthewongamedesign)
另一种对齐物品的方法是,按下V键同时移动。这么做会把当前对象对齐到场景中的任意边界或点。我们还可以稍微旋转对象同时复制它们。稍微旋转各个围栏段再制作下一个围栏,可以做出旋转度更漂亮的围栏。
fence_02(from from matthewongamedesign)
总结
使用基于贴图系统可以快速而简单地制作出关卡。
1、想象一下乐高积木,然后确定你需要的对象的贴图大小。
2、为了便于访问,请一致地使用命名规范。
3、使用预制件,以便对象更新的同时带动整个关卡的更新。
4、使用对齐功能可以迅速制作成组的对象。
我们将给最终版游戏制作至少12个关卡,内容会更丰富。为了提高工作效率,我们必然会使用这种方法制作所有关卡。
预告:在本系列的下一部分,我将介绍如何设置关卡的光照和声音。
使用Unity制作游戏关卡的教程(二)的更多相关文章
- 使用Unity制作游戏关卡的教程(一)
转自: http://gamerboom.com/archives/74131 作者:Matthias Zarzecki 我正在制作<Looking For Group – The Fork O ...
- 使用Unity制作游戏关卡的教程(三)
转自:http://gamerboom.com/archives/75593 作者:Matthias Zarzecki 本文是“使用Unity制作<The Fork Of Truth>的关 ...
- Unity制作游戏中的场景
Unity制作游戏中的场景 1.2.3 场景 在Unity中,场景(Scene)就是游戏开发者制作游戏时,所使用的游戏场景.它是一个三维空间,对应的三维坐标轴分别是X轴.Y轴和Z轴本文选自Unity ...
- [Unity]制作游戏中名字板的过程记录
先大概说一下需求: 1 每个模型上都要有名字板:人.怪.npc等等. 2 名字板上会显示:名字(文字).血条(图片)等 3 因为是透视相机,名字板离得太近会变得超大,且主角移动,名字板的位置相对于相机 ...
- C#程序员的春天之从零开始学习unity3D游戏开发入门教程二(创建项目及基本面板介绍)
一项目创建: 创建项目是开发的第一步. 运行untiy之后如果是第一次运行会弹出 我们这里随便创建一个项目. 二Untiy面板介绍: 三代码编辑器的切换: 这里我安装了vs2012. 到这里开发环境基 ...
- 《Unity 3D游戏客户端基础框架》概述
框架概述: 做了那么久的业务开发,也做了一年多的核心战斗开发,最近想着自己倒腾一套游戏框架,当然暂不涉及核心玩法类型和战斗框架,核心战斗的设计要根据具体的游戏类型而定制,这里只是一些通用的基础系统的框 ...
- 自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析
自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...
- 使用CocosSharp制作一个游戏 - CocosSharp中文教程
注:本教程翻译自官方<Walkthrough - Building a game with CocosSharp>,官方教程有很多地方说的不够详细,或者代码不全,导致无法继续,本人在看了G ...
- Unity小游戏制作 - 暗影随行
用Unity制作小游戏 - 暗影惊吓 最近玩了一个小游戏,叫做暗影惊吓,虽然是一个十分简单的小游戏,但是感觉还是十分有趣的.这里就用Unity来实现一个类似的游戏. 项目源码:DarkFollow 主 ...
随机推荐
- UVA 550 Multiplying by Rotation (简单递推)
题意:有些数字是可以这样的:abcd*k=dabc,例如179487 * 4 = 717948,仅仅将尾数7移动到前面,其他都不用改变位置及大小.这里会给出3个数字b.d.k,分别代表b进制.尾数.第 ...
- 【Mysql】初学命令行指南
MYSQL初学者使用指南与介绍 一.连接MYSQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mysqlbi ...
- .NET之美——1.1 C#中的泛型
1.1 C#中的泛型 .Net 1.1版本最受诟病的一个缺陷就是没有提供对泛型的支持.通过使用泛型,我们可以极大地提高代码的重用度,同时还可以获得强类型的支持,避免了隐式的装箱.拆箱,在一定程度上提升 ...
- java jvm学习笔记十三(jvm基本结构)
欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完 ...
- oc_转_类的数组的实现和操作
OC的数组对象的基本方法的使用:因为OC的数组中存储的为对象类型,所以我们可以新建一个Person类,通过Person生成对象进行操作. 其中Person.h中的代码为: 01.#import&l ...
- SQL中以count及sum为条件的查询
在开发时,我们经常会遇到以“累计(count)”或是“累加(sum)”为条件的查询.比如user_num表: id user num 1 a 3 2 a 4 3 b 5 4 b 7 例1:查询出现 ...
- <Chapter 2>2-2-2-1.介绍JSPs,JSTL,和EL(Introducing JSPs, JSTL, and EL)
现在,我们的时钟显示了UTC时区的时间.我们希望我们的应用可以让用户自定义时区,并且为将来的访问记住用户的偏好.为了做到这一点,我们使用Google帐户来识别哪个用户正在使用这个应用. 在我们深入了解 ...
- 搭建linux下teamspeak3多人语音服务器
最近项目中新的需求,需要支持多人在线实时通话.就安装测试一下teamspeak.http://www.teamspeak.com/ 主页有服务器版本和客户端版本供下载安装.软硬件环境: melot@m ...
- PHP操作cookie函数:setcookie()与setrawcookie()
PHP setcookie() 函数向客户端发送一个 HTTP cookie.cookie 是由服务器发送到浏览器的变量.cookie 通常是服务器嵌入到用户计算机中的小文本文件.每当计算机通过浏览器 ...
- PC问题-(仅供备用)取消磁盘的自动扫描
问题现象:有一次整个单位停电了,之后再开机,每次电脑都自检.现在不想让电脑自检了. 问题原因:可能是因为停电,造成了系统文件的破坏. 问题处理:禁用电脑自检功能(注册表方法). Windows Reg ...