Unity 3D游戏教程 — John Lemon's Haunted Jaunt

https://learn.unity.com/project/john-lemon-s-haunted-jaunt-3d-beginner?language=en

勇哥推荐的教程,当时他兴致冲冲地给我展示,“看我做的游戏!”大致是说有个小人儿被困在了一间闹鬼的屋子里,他要在不被鬼发现的前提下跑出去,小人儿吓得两腿发抖,总之看起来挺厉害的。

我的第一想法是:“这个能做毕设题目吗?”勇哥说:“当然可以,这个还是很厉害的,做出来很有成就感。”“那你花了多久?”“五个小时吧。”“......还是算了,这个跟我们通信系没有关系。”

其实我自己很想试试,但是感觉没有时间不务正业。没想到后来真的有了个机会,数媒系找其他系借老师指导毕业设计,那这个题目就很合适了。

为了指导学生,我终于自己上手了。这是前话~

-------------------------------------------------------------------------------------------

做完的感觉是,用Unity Editor做一个3D游戏真的很像“搭”一个游戏。可能这就是3D和2D的区别,2D时代会一帧帧地画原画,3D时代则更多地是建一些模型组建所需的场景和故事。当然,2D游戏里可能也是用2D素材搭起来的。不过可以在这里可以先做一个略微naive的对比总结:

● 2D是图像的,而3D多了物理特性;

● 3D有光这个关键的元素。

说回这个游戏,搭这个游戏需要:●玩家操作的人物(John Lemmon);●场景(一座鬼屋的一层);●NPC(一些静止的石像怪物,一些会动的幽灵)。以上是组成这个3D游戏世界的元素,游戏制作者首先需要把它们制作出来,然后需要让它们的表象和行为符合这个游戏的逻辑,最后还需要让这个游戏有一个不错的游戏体验。好在人物、场景和NPC在教程的素材包里已经有了,我们不需要自己动手画,画这些东西可是很复杂的美术工作呀。

下面分点介绍一下用Unity Editor制作3D游戏的技术细节。

1. GameObject、Prefab、Component

话说不管是人物还是场景,在Unity Editor里都叫做GameObject,也就是组成游戏的东西。每一个GameObject又会有一些Component,比如最基本的Component是Transform,它表示跟这个GameObject形变相关的位移、旋转和缩放,这些Component共同定义了这个GameObject的表象和行为。一个GameObject还可以若干个子GameObject,比如John Lemmon是一个GameObject,它的子GameObject包括蒙皮(skinned mesh)和骨架(root),再比如Level这个GameObject是游戏场景,它有很多子GameObject,桌子、椅子、墙壁等等。

为了制作更便利,Unity有一类特殊的GameObject叫Prefab,可以理解为GameObject的模版,可以用Prefab制作一个GameObject的实例(instance),然后在这个示例上做一些个性化的修改,这样就不用从头做一个GameObject了。

游戏里还需要有一些其他的CameObject,比如:音效、失败/通关画面、用户界面、Camera、光线预处理器、出口等等所有游戏需要的东西。

为了让这些CameObject构成一个合理的游戏,还需要给他们加上合适的Component。

Collider 为了处理CameObject A和CameObject B之间的碰撞,需要给他们都加上合适的Collider。比如给John Lemmon和Ghost的视线范围都套上了合适大小的胶囊型Collider(Capsule Collider),这样就可以通过两个Collider是否重叠来判断John Lemmon是不是撞到鬼了。使用Collider是一种简化物理仿真的操作,可以避免考虑John Lemmon和Ghost的手手脚脚等细节。

Script Script(脚本)是一个特殊的Component,它是写给这个CameObject的一段代码(通常用C#语言来写),为了实现简单的设置实现不了的一些逻辑,比如事件(如撞鬼)的触发。一个 Script通常是一个class,其中会定义一些所需的变量和方法。其中有两个方法比较特别:Start方法是游戏开始时会执行的;Update方法是在游戏更新每一帧时都会执行的。游戏制作到后期,为了实现需要多个CameObject配合的游戏逻辑,在相应的Script中会用到一些public的变量和方法。

2. 运动:Animator和Animation

大多数情况下游戏当中都会有运动的物体。在Unity中,控制一个CameObject运动需要有一个Animator Controller,这个Controller控制着CameObject的运动状态。

而具体的运动动作Animation怎么制作,这个教程中没有教到。

值得注意的是在这个游戏里会走动的CameObject有John Lemmon和Ghost两个,它们有不同的运动导航方式。John Lemmon的运动路径是由游戏玩家控制的,在这方面Unity Engine提供了很便利的跟键盘交互的方法。Ghost作为NPC,它的运动则是由根据游戏场景生成的导航网格来导航的,导航网格可以理解为游戏的地图,可以通过写Script使Ghost在地图上的几个点之间来回运动。

3. 光:Light、Camera

对于光的操作可以说Unity 3D游戏制作的重头戏。想象一下我们已经搭好了游戏场景也设置好了游戏中的角色,可是如果没有光源,那么这个游戏就是一个黑暗世界,我们无法看到当中在发生什么。为了让玩家看到游戏场景需要两个东西:

光源 包括默认的主要光源(类似太阳的直线光源)以及灯和蜡烛等。

Camera 类似电影的镜头。默认的主Camera是固定不动的,游戏中通过Unity的Cinemachine机制设置了虚拟Camera作为主Camera的分身来跟随John Lemmon。这样玩家看到的画面就仿佛是跟随在John Lemmon后脑勺上方的镜头呈现出的画面。

此外,教程中花了大量的篇幅来讲怎么对光线效果进行前期处理,使游戏画面更符合真实世界的场景以及呈现出更为恐怖的鬼屋效果,包括使用偏蓝色光、角落阴影、边缘模糊等等。毕竟3D是光线渲染的艺术嘛。

4. 声音:Audio

对于声音的设置与对于光的设置有点类似,也是需要添加声源以及声音接收器。其中声源粗略可分为背景声音(一般为2D)以及事件声音(一般为3D,如鬼飘的声音)。至于声音接收器(Listener)默认也是主Camera的Component,这款游戏当中为了符合游戏逻辑移到了John Lemmon上。

如果说对于光线的处理使游戏画面从平平无奇普普通通到有了恐怖的氛围,那加上音效则是画龙点睛了,最后真的是让这个很简单的游戏玩得我紧张到要心梗。

------------------------------------------------------------------------------------------

总结:这个教程已经准备好了全部材料包和使用说明,因此操作上是没有难度也没有坑的。教程的好处贵在带你从头到尾走了一遍Unity 3D游戏的搭建过程,让你看看游戏的各个部分是怎么回事,最后导出游戏程序并自己通关之后说真的还是蛮有成就感的。

3D引擎是光和物理的游戏,其实其中还有些地方我不明白。记一个小细节:游戏当中有一种固定的石像小怪物,如果John Lemmon被它看到了游戏就失败了。怎么判断John Lemmon是不是被它看到了呢?可以给它做一个Capsule Collider来代表它的视线范围,只要John Lemmon跟这个视线Collider碰撞了就是被它看到了。可是教程里还做了一个RayCast来判断石像跟John Lemmon之间的光线打到的是不是John Lemmon,这我就不明白了,小怪物跟John Lemmon之间的光线打到的难道不是一定是John Lemmon吗?勇哥解释说这是因为有可能John Lemmon跟石像的视线Collider碰撞了,但其实它和石像之间隔了堵墙(或者别的什么),那么石像跟John Lemmon之间的光线打到的就不是John Lemmon而是墙了。这个是没有开发经验的游戏制作者不会想到的,可见3D游戏制作当中还是有很多光和物理的细节需要推敲呀。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345