使用Unity制作游戏关卡的教程(三)
转自:http://gamerboom.com/archives/75593
作者:Matthias Zarzecki
本文是“使用Unity制作《The Fork Of Truth》的关卡”系列的第三部分。前两部分分别是:
1、了解Unity Terrain的工作(第一部分)
2、了解场景对象的设置和管理 (第二部分)
在这最后一部分,我将介绍一些组合关卡的小技巧。
视角
游戏的视角是必须认真考虑的,一点儿变化都会影响我们看游戏的方式。比如,镜头“越肩”,游戏看起来就像第三人称格斗游戏;镜头高悬静止,游戏似乎是RTS;镜头跟随着角色移动,游戏又像动作RPG了。
near position(from paladinstudios)
far position(from paladinstudios)
(《The Fork Of Truth》的镜头的近距离位置和远距离位置——注意角度的区别。)
我们调整了很长时间的视角,最终决定采用动作RPG的摄像位置的变体,也就是以固定的角度、从上到下观察角色。摄像相的高度会根据缩放程序轻微地改变:当镜头接近地面时,角度倾向于水平;当镜头位于高空时,角度倾向于垂直。
阻塞点
从小通道到开阔区域,关卡坡度会变化。通过添加“阻塞点”,玩家被迫进入关卡的狭窄传送口,这样就避免他们在开阔空间中闲逛或迷路。路径基本上是线性的,但有足够的探索空间。自然缩窄的通道会把玩家带回路径。
《The Fork Of Truth》的关卡,红色箭头指向阻塞点(from paladinstudios)
这个关卡给予玩家一定的探索和发现物品的空间,但也把他们引向达到最终目标的路径。
细节
只要可以,我们就会尽量给场景添加有趣的细节,使场景更具故事性、更生动。
船坞边的渔具(from paladinstudios)
被踩坏的围栏,是地精骚乱后的结果(from paladinstudios)
告诉你正确路径的路标(from paladinstudios)
草地上的(假)牛(from paladinstudios)
这些小细节可以传达丰富的场景信息。比如,谁居住在这里?这里发生了什么事?是否危险?接下来会遇到什么?
光照
我们使用简单的、具有即时阴影的平行光源。分享一个光照的小技巧:太阳光的颜色应该有一点儿黄,阴影应该有一点儿蓝。这是模拟晴朗的天空(四处都是蓝色)中挂着一轮“黄”日(平行光)。
雾
距离玩家较远的地方会产生雾。这么做,可以模糊远处的物品、节省渲染工作量,如果雾比较浓密的话,还可能营造出一种恐怖的氛围。
LFG-Fork-Of-Truth(from paladinstudios)
(稀疏的雾可以强化场景的氛围——但不要做过头了。)
改变氛围
当角色进入森林时,场景氛围会发生微妙的变化。光更暗了,雾更浓了。远处的物品显得更简略,色彩更柔和。下图是新设置后的场景。注意它与其他截图的区别:
声音
场景中有若干种声源。添加微妙的音效可以显著影响关卡。听到鸟鸣和水流让人觉得身临其境,佛仿游戏中的世界是真实存在的。
反应性场景
场景不一定是静态的。即使我们添加NPC的预算,除了杀气腾腾的敌人,我们仍然在场景中添加了其他交互活动。比如,当角色进入村庄时,每当他们靠近某些房子,房子的窗户就会被关上,并传出喊声“藏起小孩,藏起老婆!”这使游戏世界显得更有人情味,即使并没有真正的角色存在。
speechbubble_01(from paladinstudios)
要达到这种效果,还有许多办法,你只要想到场景必须对角色的行为或出现做出反应就行了。比如,当角色出现时,鸭子飞奔、小鹿奔跑、孩子跑来。可能性是无限的。
宝盒
谁不爱宝物?无论是宝盒还是简单的隐藏物品,发现实用的/漂亮的/珍贵的东西总是让玩家觉得惊喜,这也是宝盒之类的东西的存在意义。如下图,打开宝盒,发现一个青苹果!
chest(from palainstudios.com)
给地面添加纹理
在本系列的第一部分,我已经介绍过如何制作场景地形了。我们还可以让若干种材质之间发生叠加渐变,产生一种更加自然的过渡效果。
给石头路撒一点尘土(from paladinstudios)
树叶落在地上(from paladinstudios)
保存资源
Unity有内置资源商店,你可以从中得到各种材料。
我们的时间非常有限,所以我们决定先专心做好角色。
character(from matthewongamedesign)
很遗憾,这意味着我们不得不放弃一些场景对象。为了缓和这种处境,我们对少数高出现频率的物品使用外部资源。
房子是一个好选择,因为制作它们通常是很费时间的。我们发现一些不错的中世纪建筑素材。我们就使用它们组合建筑,然后重制纹理,这样做出来的房子就能与游戏的美术风格和美学相融合了。
注意,有些资源需要特殊的、个性化的处理方法,有些比较普遍,或以直接购买。总是保持游戏风格的一致性——这一条也适用于声音、画面、动画和一切你购买或制作的资源。
背景故事
如果有可能,在制作前请为场景写一点背景故事。谁居住在那里?是什么样的人?他们以什么为生?他们的敌人是谁?敌人来自哪里?我们虽然为村庄和它的周边环境写了故事,但你不可能看到。这些故事使场景中的一切物品都显得有意义,从而使场景更加令人信服。
总结
1、调整镜头角度,使之与场景相匹配
2、使用“开放”区域和阻塞点来平衡探索和进程
3、光照和氛围不一定是静止的——改变它们可以改变氛围
4、添加环境声音,以增加真实感
5、场景可以与玩家产生交互作用
6、隐藏物品可以让玩家惊喜
7、使用资源商店,以快速增加关卡的内容(但要谨慎地使用)
8、写背景故事,便于丰富关卡细节
构建关卡的方法有很多。我希望我们的方法可以给大家一点启发!
使用Unity制作游戏关卡的教程(三)的更多相关文章
- 使用Unity制作游戏关卡的教程(一)
转自: http://gamerboom.com/archives/74131 作者:Matthias Zarzecki 我正在制作<Looking For Group – The Fork O ...
- 使用Unity制作游戏关卡的教程(二)
转自:http://gamerboom.com/archives/75554 作者:by Matthias Zarzecki 本文是“使用Unity制作<The Fork Of Truth> ...
- Unity制作游戏中的场景
Unity制作游戏中的场景 1.2.3 场景 在Unity中,场景(Scene)就是游戏开发者制作游戏时,所使用的游戏场景.它是一个三维空间,对应的三维坐标轴分别是X轴.Y轴和Z轴本文选自Unity ...
- [Unity]制作游戏中名字板的过程记录
先大概说一下需求: 1 每个模型上都要有名字板:人.怪.npc等等. 2 名字板上会显示:名字(文字).血条(图片)等 3 因为是透视相机,名字板离得太近会变得超大,且主角移动,名字板的位置相对于相机 ...
- 《Unity 3D游戏客户端基础框架》概述
框架概述: 做了那么久的业务开发,也做了一年多的核心战斗开发,最近想着自己倒腾一套游戏框架,当然暂不涉及核心玩法类型和战斗框架,核心战斗的设计要根据具体的游戏类型而定制,这里只是一些通用的基础系统的框 ...
- 使用CocosSharp制作一个游戏 - CocosSharp中文教程
注:本教程翻译自官方<Walkthrough - Building a game with CocosSharp>,官方教程有很多地方说的不够详细,或者代码不全,导致无法继续,本人在看了G ...
- 自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析
自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...
- Unity小游戏制作 - 暗影随行
用Unity制作小游戏 - 暗影惊吓 最近玩了一个小游戏,叫做暗影惊吓,虽然是一个十分简单的小游戏,但是感觉还是十分有趣的.这里就用Unity来实现一个类似的游戏. 项目源码:DarkFollow 主 ...
- 自制Unity小游戏TankHero-2D(2)制作敌方坦克
自制Unity小游戏TankHero-2D(2)制作敌方坦克 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的. ...
随机推荐
- busybox filesystem httpd php-5.5.31 sqlite3 webserver
/******************************************************************** * busybox filesystem httpd php ...
- busybox filesystem udhcpc 原理
/******************************************************************** * busybox filesystem udhcpc 原理 ...
- HDU 5296 Annoying problem (LCA,变形)
题意: 给一棵n个节点的树,再给q个操作,初始集合S为空,每个操作要在一个集合S中删除或增加某些点,输出每次操作后:要使得集合中任意两点互可达所耗最小需要多少权值.(记住只能利用原来给的树边.给的树边 ...
- POJ 3352 Road Construction(边双连通分量,桥,tarjan)
题解转自http://blog.csdn.net/lyy289065406/article/details/6762370 文中部分思路或定义模糊,重写的红色部分为修改过的. 大致题意: 某个企业 ...
- VirtualBox clonevdi文件和修改vdi的uuid
因为VirtualBox下,不允许有相同的uuid,所以要拷贝一份新的vdi像普通的拷贝是办不到的.需要用VirtualBox自带的一个.exe文件VBoxManage. 1.首先,进入终端或者是命令 ...
- erlang 线上分析工具集锦
1.Recon-Erlang线上系统诊断工具(引自): Erlang系统素以稳定可靠闻名,但是它也是c实现的,也是要管理比如内存,锁等等复杂的事情,也会出现Crash,而且crash的时候大部分原因是 ...
- 【Mac】Mac键盘实现Home, End, Page UP, Page DOWN
* Home键=Fn+左方向 * End键=Fn+右方向 * PageUP=Fn+上方向 * PageDOWN=Fn+下方向 * 向后删除=Fn+delete * Find ...
- 选择或者放弃MySQL的理由
MySQL 作为一个开源数据库,自从被 Oracle 接管后,其发展前景就一直受到开发社区的关注,其中也有质疑,最近,两位开发者分别发表了选择和放弃MySQL 的理由,值得数据库相关人员参考. And ...
- hdu 3948(后缀数组+RMQ)
题意:求一个串中有多少不同的回文串. 分析:这一题的关键是如何去重,我表示我现在还没理解为什么这样去重,先放这里过两天再看!! //不同回文子串数目 #include <iostream> ...
- Reading or Writing to Another Processes Memory in C# z
http://www.jarloo.com/reading-and-writing-to-memory/ Declarations [Flags] public enum ProcessAccessF ...