使用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)这个游戏制作的. ...
随机推荐
- 省常中模拟 Test4
prime 数论 题意:分别求 1*n.2*n.3*n.... n*n 关于模 p 的逆元.p 是质数,n < p. 初步解法:暴力枚举.因为 a 关于模 p 的逆元 b 满足 ab mod p ...
- LeetCode: Sqrt
Title: Implement int sqrt(int x). Compute and return the square root of x. 思路:这个平方根肯定是在[1,x]之间,所以在这个 ...
- 【转】第一次使用Android Studio时你应该知道的一切配置
原文网址:http://www.cnblogs.com/smyhvae/p/4390905.html [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.c ...
- Oracle 手工清除回滚段的几种方法
关于回滚段的问题,之前也小整理过一个,参考: Current online Redo 和 Undo 损坏的处理方法 http://blog.csdn.net/tianlesoftware/articl ...
- Android入门:发送HTTP的GET和POST请求
HTTP的请求详解在我的博客中已经讲解过: http://blog.csdn.net/xiazdong/article/details/7215296 我在http://blog.csdn.net/x ...
- Slalom
题意: 有n个宽度为w的门,给出门的左端点的水平位置x和高度y,和恒定的垂直速度,现有s个速度,求能通过这n个门的最大速度. 分析: 二分速度判断 #include <map> #incl ...
- 关于Noise and Error主题的一些小知识
(一)Noise会不会对VC bound产生影响? 此笔记源于台湾大学林轩田老师<机器学习基石><机器学习技法> 答案是不会. 当信号中加入了Noise,其实对我们之前学过的内 ...
- 读《编写高质量代码-Web前端开发修炼之道》笔记
第一章 1.Web标准由一系列标准组合而成,核心理念是将网页的结构,样式和行为分离,所以分为三大部分:结构标准,样式标准和行为标准.结构标准包括XML标准,XHTML标准,HTML标准:样式标准指CS ...
- socket.io的抽象实现:engine.io
engine.io是一个socket.io的抽象实现,作为socket.io的服务器和浏览器之间交换的数据的传输层.它不会取代Socket.IO,它只是抽象出固有的复杂性,支持多种浏览器,设备和网络的 ...
- Spark RDD概念学习系列之Spark的数据存储(十二)
Spark数据存储的核心是弹性分布式数据集(RDD). RDD可以被抽象地理解为一个大的数组(Array),但是这个数组是分布在集群上的. 逻辑上RDD的每个分区叫一个Partition. 在Spar ...