转自: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. POJ 3259 Wormholes 虫洞(负权最短路,负环)

    题意: 给一个混合图,求判断是否有负环的存在,若有,输出YES,否则NO.有重边. 思路: 这是spfa的功能范围.一个点入队列超过n次就是有负环了.因为是混合图,所以当你跑一次spfa时发现没有负环 ...

  2. java中的final、finally和finalize

    最近在读Thinking In Java,秉着有些地方还能知道自己不会的精神,都去好好查阅了一些资料,在内存分配这一章,看到finalize()这个方法,刚开始很不理解,查阅了一些资料,顺带看了一下f ...

  3. Darwin Streaming Server 安裝操作備忘

    Darwin Streaming Server 安裝操作 Darwin Streaming Server是蘋果公司推出的開放源碼.跨平台多媒體串流伺服器, 提供音樂 (mp3) 與影音 (3gp.mp ...

  4. poj 1236 Network of Schools

    题目描述:有一些学校连接到一个计算机网络.这些学校之间达成了一个协议:每个学校维护着一个学校列表,它向学校列表中的学校发布软件.注意,如果学校B在学校A的列表中,则A不一定在B的列表中.任务A:计算为 ...

  5. Mysql读写分离(mysql-proxy)

    MySQL-Proxy是一个处于你的client端和MySQL server端之间的简单程序,它可以监测.分析或改变它们的通信.它使用灵活,没有限制,常见的用途包括:负载平衡,故障.查询分析,查询过滤 ...

  6. 一天一个Java基础——数组

    一天一个变成了几天一个,最近接受的新东西太多.太快,有好多需要blog的但没有时间,这些基础知识应该是要深挖并好好研究的,不应该每次都草草了事,只看个皮毛. 数组: JVM将数组存储在一个称为堆(he ...

  7. 基于Spring AOP实现对外接口的耗时监控

    AOP是Spring的核心,Spring不但自身对多种框架的集成是基于AOP,并且以非常方便的形式暴露给普通使用者.以前用AOP不多,主要是因为它以横截面的方式插入到主流程中,担心导致主流程代码不够清 ...

  8. 位图引起的内存溢出OutOfMemory解决方案

    一.问题描述:Android下的相机在独自使用时,拍照没有问题,通过我们的代码调用时,也正常,但是更换了不同厂商的平板,ROM由Android4.0变成了Android4.1后,拍照出现了OutOfM ...

  9. hadoop2.0中无法启动datanode的问题

    问题描述:在启动datanode进程时,能成功的启动:但用jps查看进程时,发现进程不存在,下面是在datanode日记文件的错误信息 如下图的截屏所示: 主要原因:发生错误的原因:由于把data放在 ...

  10. 反转链表 --剑指offer

    题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反正后链表的头结点. #include<stdio.h> #include<malloc.h> typedef str ...