Unity官方实例教程 Space Shooter(一)

Space Shooter 太空射击

传送门

Unity官方实例教程 Space Shooter(一)
Unity官方实例教程 Space Shooter(二)
Unity官方实例教程 Space Shooter(三)
Unity官方实例教程 Space Shooter(四)
Unity官方实例教程 Space Shooter(五)

前言

游戏截图

Space Shooter教程汉化版,点击这里

还是提前说明一下,视频中的Unity版本为4.2,而现在最新版本是5.2,有部分内容的制作方法不一样了,所以文中都以5.2版本为基准。

你将学到什么?

  • 如何在Unity Asset Store下载资源
  • 如何导入游戏资源
  • 如何保存适合自己的编辑器布局
  • 如何设置游戏视窗大小
  • 正交摄像机的用法
  • 如何添加模型到场景里面
  • Capsule Collider和Mesh Collider的用法
  • 如何为飞船添加灯光
  • 如何给飞船添加引擎喷射效果

一、新建一个项目

关于如何新建一个项目,这边就不在做详细的介绍了,有需要的朋友可以查看Unity官方实例教程 Roll-a-Ball(一)这边文章的相关内容,我们这边只提示一下,新项目的名称为Space Shooter

二、在Unity Asset Store中下载资源

首先我们在通过Windows -> Asset Store打开Asset Store,如下:

Windows -> Asset Store

然后我们便会看到Asset Store的界面,接下来我们在Search栏输入我们需要搜索的资源名称,本例中我们搜索Space Shooter,然后就会出现搜索结果,结果里面第一个就是我们需要的资源素材了

资源搜索结果

点击该资源,然后在页面中找到下载按钮,然后等在资源下载完成,就可以进行导入了

导入按钮

对于已经下载的资源,除了在这边进行导入,我们还可以在已下载的列表中进行导入,我们首先点击切换到下载管理器按钮,然后在下载页,选择导入我们需要的资源即可,如下图:

下载管理器

我们点击导入按钮后,就会弹出导入界面,在这里,我一定要确保所有的资源项都被勾选,如果不确定,我们可以点击一下All按钮来勾选所有的资源,确保所有资源都被勾选后,我们便可以点击Import按钮来进行导入操作了

导入资源

导入成功后,我们可以看到在我们项目的Assets文件夹下面多了很多资源文件,如下图:

Paste_Image.png

到这一步,游戏所需的所有资源我们就全部的导入成功了!

三、配置Unity编辑器布局

为了更效率更方便我们制作游戏,把编辑器里面的各个窗口进行一个合理的布局是非常重要的,在这边,我们按照官方推荐的布局,将编辑器布置成下面这样:

Paste_Image.png

当我们布置好我们的编辑器后,如果下次再重新打开,就会发现布局又回到以前的默认布局了,所以为了方便起见,我们将这个布局进行一下保存,这样只要以后我们需要,在任何项目都可以调用这个布局

保存布局

我们选择Save Layout...就会弹出保存对话框,我们将该布局名称命名为Space Shooter,这样以后无论我们的编辑器被弄乱成什么样子,只要点击一下Space Shooter就可以回到我们这个布局了

四、设置发布平台和游戏视窗大小

本例中,最后我们会将游戏发布到wed平台,所以我们首先将游戏的发布平台设置为Wed平台(如何设置发布平台,可以参见Unity官方实例教程 Roll-a-Ball(二)的相关内容)

然后我们按照官方例子的要求来调整一下游戏的视窗大小,我们通过Edit -> Project Settings -> Player,打开Player Settings,如下图:

Edit -> Project Settings -> Player

然后在右边的Inspector窗口中,选择wed平台,然后将屏幕的宽高分别设置为600*900,如下图:

设置游戏窗口大小

做好这些设置后,我们将当前场景进行一下保存,我们首先在Assets文件下面创建一个名为_Scenes的文件夹,然后将保存的场景放入该文件夹中,在本例中,我们将场景保存为Main(关于如何保存场景参见Unity官方实例教程 Roll-a-Ball(一)的相关内容)

好的资源分类有利于项目的管理,所以好的习惯一开始我们就要养成

五、设置正交摄像机

由于Space Shooter游戏是一个顶视角的游戏,所以我们需要将摄像机进行改变,设置为正交类型的摄像机,我们选中摄像机,然后在Inspector中将摄像机的Projection改为Orthographic

改为Orthographic

然后我们将摄像机的Transform属性重置,再把摄像机的Rotation的X设置为90,让它直直的看这下方,最后我们调整摄像机的Size为10

六、添加飞船和设置灯光

首先我们在资源文件中找到飞船的模型,依次打开Assets -> Models -> vehicle_playerShip,然后把vehicle_playerShip模型拖入到Hierarchy窗口中,然后做我们添加一个GameObject的两个标准动作,重置Transforms和命名,在这里我们将飞船的名字命名为Player

添加飞船模型

经过上面的操作我们便可以在编辑器里面看到飞船的模型,为了让飞船的模型在游戏里面有更好的显示效果,我们给飞船添加两个灯光,一个主灯光(Main Light),一个填充灯光(Fill Light)

首先主灯光我们无需添加,修改Unity自动添加的默认灯光就可以了,我们先创建一个空的GameObject,用来当做文件夹分类,装下所有的灯光对象,命名为Lighting,然后将自带的灯光进行重置Transforms和命名,名称修改为Main Light,然后把Main Light的Rotation属性的xyz分别设置为(30,256,-50),这是我们便可看看效果了

打上主灯光的飞船效果

其实这边Main Light的Rotation属性,大家可以试着自己调,有利于理解灯光的作用,主要自己喜欢,不用完全按教程来

有了主灯光后,我们再为飞船添加一个辅助的填充灯光,首先我们新建一个平行光(Directional light),进行两个标准动作,名称修改为Fill Light,并拖入Lighting下面,然后把Fill Light的Rotation属性的xyz分别设置为(7,30,-360),最后我们把Fill Light的颜色设置为淡蓝色(这边的颜色大家如果喜欢,也可以自行调整)

打上填充灯光的飞船效果

七、设置飞船的物理属性和碰撞

接下来我们给飞船添加刚体属性(Rigidbody),添加刚体属性的教程请参见Unity官方实例教程 Roll-a-Ball(一)的相关内容
但是这里需要说明的是,由于我们的飞船,肯定不希望飞船会想球体一样自由落下,这样就太无语啦,所以我们需要给飞船的刚体属性中去掉重力选项,如下图:

去掉重力选项

刚体添加完成后,接着我们需要给飞船设置碰撞,不然没有碰撞飞船无敌一般的存在,就不好玩啦,这里设置碰撞有两种方法:

  • Capsule Collider(胶囊碰撞)
  • Mesh Collider(模型碰撞)

Capsule Collider(胶囊碰撞)

两种方法我们都使用以下,来看看他们的不同和利弊,首先我们先给飞船添加一个Capsule Collider,通过Add Component -> Physics -> Capsule Collider来添加,然后我们设置Radius0.6Height1.7DirectionZ-Axis

设置Capsule Collider

设置完Capsule Collider,我们可以看到飞船模型周围出现一圈胶囊形状的绿圈,这个绿圈就代表这检查飞船碰撞的范围

胶囊碰撞

从上图中我们可以看出,红圈处其实是飞船模型没有的地方,但是实际检测碰撞的时候是会被计算到的,所以我们可以看出,胶囊碰撞体的优劣如下:

  • 缺点:碰撞检测不太精准,会出现碰撞体和模型不匹配的问题
  • 优点:效率高,因为不管多么复杂的模型,胶囊碰撞都只是两个球体组成的

Mesh Collider(模型碰撞)

接下来我们删除上面添加的胶囊碰撞体,重新给飞船添加一个Mesh Collider
我们通过Add Component -> Physics -> Mesh Collider来添加,然后勾选ConvexIs Trigger选项,接下来我们便可看到飞船的模型碰撞如下:

Mesh Collider(模型碰撞)

我们从上图可以看到,绿线同样表示这飞船的碰撞范围,这次的范围要比胶囊碰撞精确多了,但是我们同样可以看到,这次的绿线也比胶囊碰撞复杂多了,所以我们可得知Mesh Collider的优劣如下:

  • 缺点:性能消耗更多
  • 优点:碰撞检测更加精确

所以我们在以后的实际运用中,需要根据具体的情况来决定使用何种碰撞,当然看到这里就会有朋友会问,就没有两全其美的方法吗?答案是有的,我们仔细观察一下Mesh Collider组件,会发现他有一个Mesh选项,这个选项是做什么用的呢?它就是决定着我们具体使用哪一个模型来进行碰撞检测,一般默认会使用组件所属对象的自身模型,但是其实我们做碰撞检测并不需要像显示一样用换个精度如此之高的模型,我们只需一个大概的轮廓就行了,所以我们可以制作一个简单的面数相对较少的模型,专门用于碰撞检测

所以我们将资源中已经做好的专门用于碰撞的模型拖入到Mesh选项中

Paste_Image.png

然后我们在观察一下飞船的碰撞,我们就会发现碰撞模型的面数精简的许多,并且精度也非常不错!

专门用于碰撞的模型

八、给飞机添加引擎喷射效果

首先我们在Assets -> Prefabs -> VFX -> Engines -> engines_player,找到喷射效果资源,然后将喷射资源拖到飞船下面,如下图:

添加喷射效果

然后展开engines_player,选中part_jet_flarepart_jet_core两个对象

Paste_Image.png

在将Scene窗口视图调整为俯视角,然后通过Gizmos调整一下喷射效果的大小到合适的大小

调整喷射效果大小

最后我们就可以看到飞机的引擎喷射效果了,非常棒!

喷射效果

下集预告

在下一集,我们将会学会:

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

推荐阅读更多精彩内容