使用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 主 ...
随机推荐
- ti processor sdk linux am335x evm setup.sh hacking
#!/bin/sh # # ti processor sdk linux am335x evm setup.sh hacking # 说明: # 本文主要对TI的sdk中的setup.sh脚本进行解读 ...
- RTP协议分析
目录(?)[-] 第1章 RTP概述 RTP是什么 RTP的应用环境 相关概念 流媒体 第2章 RTP详解 RTP的协议层次 传输层的子层 应用层的一部分 RTP的封装 RTCP的 ...
- <摘录>PS和TS流的区别
在 MPEG-2系统中,信息复合/分离的过程称为系统复接/分接,由视频,音频的ES流和辅助数据复接生成的用于实际传输的标准信息流称为MPEG-2传送 流(TS:TransportStream).据传输 ...
- poj 2762 Going from u to v or from v to u?
题目描述:为了让他们的儿子变得更勇敢些,Jiajia和Wind将他们带到一个大洞穴中.洞穴中有n个房间,有一些单向的通道连接某些房间.每次,Wind选择两个房间x和y,要求他们的一个儿子从一个房间走到 ...
- 【转】第一次使用Android Studio时你应该知道的一切配置
原文网址:http://www.cnblogs.com/smyhvae/p/4390905.html [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.c ...
- Jedis的Sharded源代码分析
概述 Jedis是Redis官方推荐的Java客户端,更多Redis的客户端可以参考Redis官网客户端列表.当业务的数据量非常庞大时,需要考虑将数据存储到多个缓存节点上,如何定位数据应该存储的节点, ...
- Android UI开发详解之Fragment
Fragment是Android自从3.0之后新加入的一个组件,我相信很多人都已经听说过这个组件了,但这个组件到底是个什么,如何去使用他呢,且听我讲来. 以下部分资料来自官网(官网才是王道,其他都是浮 ...
- 两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]…*a[N-1]/a[i];
转自:http://blog.csdn.net/shandianling/article/details/8785269 问题描述:两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i ...
- 用javascript 面向对象制作坦克大战(四)
我们现在还差一个重要的功能,没错,敌人坦克的创建以及子弹击中敌人坦克时的碰撞检测功能. 5. 创建敌人坦克完成炮弹碰撞检测 5.1 创建敌人坦克对象 敌人坦克和玩家坦克一样,同样继承自我们的坦克 ...
- jQuery常用的正则表达式
[导读] 本文章提供了大量的jQuery正则表达式,有电话号码,密码,用户名,邮箱,哈能输入字符等,有需要的朋友可以参考一下. 代码如下复制代码 <!DOCTYPE html PUBLIC &q ...