【Unity3D】三、使用Playground框架轻松制作2D游戏

简单的介绍与起步

Unity的Playground是一个用来制作拥有物理引擎的2D游戏开发框架(framework),可以说非常适合初学者了,而且使用Playground框架制作2D游戏不需要编码的工作,单纯在Unity的编辑器中就可以完成,因为Playground提供了很多但任务化的Components,这些Components很容易被结合起来使用,从而得到各种各样的功能。

开始创建游戏

创建游戏的过程和上一节中的创建方式一样,只是要将游戏设置为2D,这里我们创建一个名为Playground2D的游戏项目。

创建一个2D游戏项目

引入Assets资源

为了使用Playground框架,需要在Asset Store中搜索Unity Playground并下载引入其资源包,在顶部菜单栏的Window中选择Asset Store即可进入资源商店,搜索找到Unity Playground选择下载(Download)然后引入(Import),再进行一系列操作后一气呵成。

注:在Asset Store下载的资源的默认保存位置:C:\Users\你的用户名\AppData\Roaming\Unity\Asset Store-5.x
(AppData这个文件夹一般情况下是隐藏的。)

引入Playground框架
引入Playground框架
引入Playground框架
引入Playground框架
引入Playground框架

引入成功后,可以看到Playground框架已经为我们准备了很多资源,主要的资源集中在Scripts,打开这个文件夹可以发现很多已经写好的可以直接使用的脚本。

引入Playground框架后得到的Assets

创建游戏背景

在上一篇文章中出现的内容将不详细介绍,这里将SampleScene重命名为MainScene并保存于Scenes目录下,保留Main Camera。

选择Assets->Images->Backgrounds下的BG_Space背景图,拖动到Hierarchy面板中。

引入背景图片

在Inspector面板中的Sprite Renderer(着色器)中将起Draw Mode(绘制模式)改为Tiled(平铺),还可以扩大它的大小,这里将其X、Y的Size值均设置为100。然后展开Visibility Options(可视化选项),将Sorting Layer(排布布局)设置为Background(背景),这样可以使得其他所有的GameObject均在其上方。

设置背景参数

添加Player

选择Assets->Images->Spaceships下的一个图像作为Player,这里选择了一个红色的飞船,并将其拖动到Hierarchy面板中。在Inspector面板中,为了让飞船实现碰撞等物理效果,为其添加刚体属性,只不过这里我们选择添加Rigidbody 2D,即选择Add Component,找到或者搜索该Component之后添加。
显然,我们需要将它的Gravity(重力)置零,为了不让其在受到一小点点的力后运动起来停不下来,将其Friction(摩擦力)设置一个合理的值,这里设置为2,Angular Friction(角摩擦)可以保持0.05的预设值。

设置刚体参数

接下来就可以体会到Playground框架的强大之处,因为它为我们准备了各种各样的脚本,运用这些脚本可以直接实现很多游戏情景,而我们要做的只是将对应的脚本添加给对应的GameObject,并且设置脚本需要的public属性的值,也就是在Inspector面板中设置这些值即可。
首先,为了让飞船能够运动起来,为其添加一个推动力的脚本:Push,你可以选择从Assets中的Scirpts目录下找到这个脚本拖动到Inspector面板中,也可以在Add Component中直接搜索添加该脚本。然后更改Push Strength(推力大小)为适当的值,这里置为8,Axis(推力的方向)为Y。此时运行游戏可以通过按下空格键使飞船运动起来。

添加Push脚本并设置参数

再添加Rotate脚本,这个脚本可以设置飞船的旋转,很明显Type Of Control设置控制方式,这里选择WASD控制,Speed选项控制旋转速度,这里设置为2,因为我不喜欢操作太灵敏。

设置Rotate脚本参数

这里还给飞船增加了一点儿可爱的属性,找到Assets->Prefabs->Particles下的P_Flame,拖动到Hierarchy成为飞船的子物体,让其跟随飞船运动,然后通过选择和平移调整一个合适的位置加到飞船的尾部。

为飞船添加喷射火焰

设置Camera

设置Camera,改变其视野范围(调整Frame Size,此处设置为10),并添加一个Follow脚本使其固定跟随一个物体,直接点击Camera中的Add Camera Follow script即可添加,然后将我们的Player也就是飞船拖动到Target作为其参数即可。

设置Camera自动跟随脚本

注:如果想要回到最原始的Components,可以在顶部菜单栏的Playground下选择Turn Playground Off

可以设置关闭Playground框架

添加障碍物

选择Assets->Images->Asteroids下的一个石头图像作为障碍物,同样需要为其添加Rigidbody 2D属性,修改其中的值。
在物理学中我们知道,如果一个物体没有受到任何摩擦力,在其受到一个力从而获得一个初速度后会一直以这个速度运动下去,所以为了避免这种情况的发生,我们还是需要为其Friction赋予一个合理的值。

添加障碍物的刚体属性

添加Collider

为了有碰撞效果,为飞船和石头均添加Collider属性

添加障碍物的Collider属性

此时运行游戏,会发现飞船可以撞动石头

添加障碍物后测试运行成功

添加计分机制

为飞船添加一个Health System(健康系统),其实就是我们常说的这个东西还有多少滴血,直接添加Health System脚本就行,可以看到,我们可以预设生命值,这里默认为3

添加生命值系统

飞船碰撞到了石头,飞船的生命值就减少一,这需要我们为石头添加Modify Health脚本,然后看到有两个可选参数,第一个Destroy When Activated(起作用时销毁)如果选中的话就会在石头起到“减血”作用后销毁石头,这里不选中,第二个Health Change即为对生命值的变化,这里设置为-1很合理。

设置石头的减生命值功能

添加UI

为了让生命值和分数显示出来,我们为Hierarchy目录添加Assets下的Prefabs下的UserInterface,UI自动显示在了游戏界面中。

添加UI

为了让Untiy清楚生命值和分数都记录的是谁的,这里需要为Player添加一个Player的Tag,添加Tag已经在上一篇中详细地提到了。

添加Player的Tag

此时运行游戏,会在你的生命值消耗完时显示Game Over

运行游戏检测游戏结束UI

添加胜利条件

到什么时候才算胜利呢?UI Script处可以设置,比如这里默认的为一个玩家、计分制、5分为胜利:

添加胜利条件

创建打击物体

为了不让我们的飞船显得太过于脆弱,为其添加发射激光的功能。

这里选择Assets->Images->Projectiles下的LasersMid作为发射的激光,拖动到Hierarchy下。

为其添加Rigidbody 2D和capsule Collider 2D(胶囊状的碰撞器)使其拥有碰撞属性,正如上一篇中所提到的,还需要选中Is Trigger一项。

基本的Components

Playground框架还为我们准备了Bullet(子弹)脚本使其在特定条件下产生一个该对象的引用,即发射一发子弹。
添加了Bullet脚本后的激光束,将其拖动回Assets下的Prefabs目录下成为一个预设体。

添加Bullet脚本

现在有了子弹,还需要一个发射子弹的机枪,我们在飞船下新建一个空的子物体,将其命名为BulletShooter,将其拖动至飞船的顶部也就是发射的地方。

创建一个“机枪”

为刚创建的BulletShooter添加一个Object Shooter的脚本,在Inspector面板中设置其参数。
Prefab To Spawn(要发射的预设体)当然是拖动我们已有的Prefab下的子弹预设体到这里作为参数,Key To Press是发射的按键,这里设置为W键,Creation Rate是产生的速度,这里设置为0.2,Shoot Speed为发射速度,这里设置为10,shoot Direction为发射方向,显然是沿Y方向发射,所以将X设为0,Y设为1。

设置Shooter脚本

射击中石头时石头就需要消失并且我们要得分,所以为石头再添加一个脚本:Destory For Points,这个脚本使得物体被击中时销毁并为我们的Player增加分数,Points Worth即其所价值的分数,这里我们设置为0,因为并不想在击中石头后得到分数。

被击中时销毁物体

添加收集体

为游戏添加一些在太空中漂浮的外星人,用我们驾驶的飞船去收集这些外星人,收集到的外星人就进入飞船(消失),看起来很简单了。

选择Assets->Images->Creatures下的Alien1作为外星人,显然它需要拥有以下的Component:

  1. Rigidbody 2D:刚体属性
添加刚体属性
  1. Polygon Collider 2D:碰撞机属性
添加碰撞机属性
  1. Auto Rotate:自动旋转
添加自动旋转属性

再添加一个Collectable(可收集的)脚本,这个脚本表示这是一个可以被收集的物体,Points Worth表示收集到后得到的分数,这里默认1不变。

添加Collectable脚本

这时候运行游戏看一下会发现收集外星人后Score会增加。

收集外星人Score增加

完善游戏

最有就很简单了,对石头和外星人进行复制(Duplicate),然后任意摆放,如何设计游戏关卡就是见仁见智的问题了,为了能够胜利,要使得外星人的个数多于在UI中设计的胜利条件的数值哦。

完善游戏

关于文档

在引入Playground框架后,可以在Assets文件夹下发现Documentation目录,该目录有关于Playground框架的每一个脚本的具体功能和参数的设置方法,非常值得参考。

参考文档

Cheatsheets

Cheetsheets
Cheetsheets
Cheetsheets
Cheetsheets
Cheetsheets
Cheetsheets
Cheetsheets

参考资料:https://unity3d.com/learn/tutorials/s/unity-playground

本节内容的完整官方教程视频(英文无字幕)与官方文档分享:https://pan.baidu.com/s/1MyITuPbK6_zO8rtK_i81pg 提取码:7xti


转载请注明出处,本文永久更新链接:https://blogs.littlegenius.xin/2019/02/20/Unity中使用Playground框架轻松制作2D游戏/

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

推荐阅读更多精彩内容