转自: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制作游戏关卡的教程(二)的更多相关文章

  1. 使用Unity制作游戏关卡的教程(一)

    转自: http://gamerboom.com/archives/74131 作者:Matthias Zarzecki 我正在制作<Looking For Group – The Fork O ...

  2. 使用Unity制作游戏关卡的教程(三)

    转自:http://gamerboom.com/archives/75593 作者:Matthias Zarzecki 本文是“使用Unity制作<The Fork Of Truth>的关 ...

  3. Unity制作游戏中的场景

    Unity制作游戏中的场景 1.2.3  场景 在Unity中,场景(Scene)就是游戏开发者制作游戏时,所使用的游戏场景.它是一个三维空间,对应的三维坐标轴分别是X轴.Y轴和Z轴本文选自Unity ...

  4. [Unity]制作游戏中名字板的过程记录

    先大概说一下需求: 1 每个模型上都要有名字板:人.怪.npc等等. 2 名字板上会显示:名字(文字).血条(图片)等 3 因为是透视相机,名字板离得太近会变得超大,且主角移动,名字板的位置相对于相机 ...

  5. C#程序员的春天之从零开始学习unity3D游戏开发入门教程二(创建项目及基本面板介绍)

    一项目创建: 创建项目是开发的第一步. 运行untiy之后如果是第一次运行会弹出 我们这里随便创建一个项目. 二Untiy面板介绍: 三代码编辑器的切换: 这里我安装了vs2012. 到这里开发环境基 ...

  6. 《Unity 3D游戏客户端基础框架》概述

    框架概述: 做了那么久的业务开发,也做了一年多的核心战斗开发,最近想着自己倒腾一套游戏框架,当然暂不涉及核心玩法类型和战斗框架,核心战斗的设计要根据具体的游戏类型而定制,这里只是一些通用的基础系统的框 ...

  7. 自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析

    自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...

  8. 使用CocosSharp制作一个游戏 - CocosSharp中文教程

    注:本教程翻译自官方<Walkthrough - Building a game with CocosSharp>,官方教程有很多地方说的不够详细,或者代码不全,导致无法继续,本人在看了G ...

  9. Unity小游戏制作 - 暗影随行

    用Unity制作小游戏 - 暗影惊吓 最近玩了一个小游戏,叫做暗影惊吓,虽然是一个十分简单的小游戏,但是感觉还是十分有趣的.这里就用Unity来实现一个类似的游戏. 项目源码:DarkFollow 主 ...

随机推荐

  1. HDU 4638 Group ★(树状数组)

    题意 询问一段区间里的数能组成多少段连续的数. 思路 先考虑从左往右一个数一个数添加,考虑当前添加了i - 1个数的答案是x,那么可以看出添加完i个数后的答案是根据a[i]-1和a[i]+1是否已经添 ...

  2. html5极速3D立体式图片相册切换效果

    下载Demo  

  3. iOS AFNetworking的使用

    转:http://www.cnblogs.com/lookenwu/p/3927897.html AFNetworking几乎是iOS上最常用的HTTP库了,AFNetworking也确实用起来简单, ...

  4. mssql的delete用用到被delete的表的别名

    +' delete m from '+@strDBName +'.dbo.m_device as m where not exists ' +' (select 1 from @tmpDevice w ...

  5. 为在MyEclipse中配置Tomcat服务器郁闷的朋友们解决郁闷

    是不是很郁闷!为了在MyEclipse配置Tomcat 服务器,竟然弄了你几乎一个上午,最后也没弄成功,也许你本该早注意到Tomcat 5.x要有这个JDK的支持,配置才能成功. 一上午辛辛苦苦也没解 ...

  6. HDU 4911 Inversion

    http://acm.hdu.edu.cn/showproblem.php?pid=4911   归并排序求逆对数. Inversion Time Limit: 2000/1000 MS (Java/ ...

  7. Android应用启动时间及启动日志获取方法

    1. Android应用中,可以使用如下方式进行应用启动时间的查看 2. 启动日志获取方法:

  8. 七牛云存储官方接口PHP版本

    PHP SDKv6 此 SDK 适用于 PHP 5.1.0 及其以上版本.基于 七牛云存储官方API 构建.使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云存储上. ...

  9. Tkinter教程之Scrollbar篇

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811319 '''Tkinter教程之Scrollbar篇'''#Scrollbar(滚动条) ...

  10. Cloudera CDH5 部署实战指南(离线安装)

    配置软件源服务器 1.安装createreporpm -ivh deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm rpm -ivh python-deltarpm ...