簡(jiǎn)單的介紹與起步
Unity的Playground是一個(gè)用來制作擁有物理引擎的2D游戲開發(fā)框架(framework),可以說非常適合初學(xué)者了恕沫,而且使用Playground框架制作2D游戲不需要編碼的工作监憎,單純?cè)赨nity的編輯器中就可以完成纱意,因?yàn)镻layground提供了很多但任務(wù)化的Components婶溯,這些Components很容易被結(jié)合起來使用,從而得到各種各樣的功能偷霉。
開始創(chuàng)建游戲
創(chuàng)建游戲的過程和上一節(jié)中的創(chuàng)建方式一樣迄委,只是要將游戲設(shè)置為2D,這里我們創(chuàng)建一個(gè)名為Playground2D的游戲項(xiàng)目类少。
引入Assets資源
為了使用Playground框架叙身,需要在Asset Store中搜索Unity Playground并下載引入其資源包,在頂部菜單欄的Window中選擇Asset Store即可進(jìn)入資源商店硫狞,搜索找到Unity Playground選擇下載(Download)然后引入(Import)信轿,再進(jìn)行一系列操作后一氣呵成。
注:在Asset Store下載的資源的默認(rèn)保存位置:C:\Users\你的用戶名\AppData\Roaming\Unity\Asset Store-5.x
(AppData這個(gè)文件夾一般情況下是隱藏的残吩。)
引入成功后财忽,可以看到Playground框架已經(jīng)為我們準(zhǔn)備了很多資源,主要的資源集中在Scripts泣侮,打開這個(gè)文件夾可以發(fā)現(xiàn)很多已經(jīng)寫好的可以直接使用的腳本即彪。
創(chuàng)建游戲背景
在上一篇文章中出現(xiàn)的內(nèi)容將不詳細(xì)介紹,這里將SampleScene重命名為MainScene并保存于Scenes目錄下活尊,保留Main Camera隶校。
選擇Assets->Images->Backgrounds下的BG_Space背景圖漏益,拖動(dòng)到Hierarchy面板中。
在Inspector面板中的Sprite Renderer(著色器)中將起Draw Mode(繪制模式)改為Tiled(平鋪)深胳,還可以擴(kuò)大它的大小绰疤,這里將其X、Y的Size值均設(shè)置為100稠屠。然后展開Visibility Options(可視化選項(xiàng))峦睡,將Sorting Layer(排布布局)設(shè)置為Background(背景),這樣可以使得其他所有的GameObject均在其上方权埠。
添加Player
選擇Assets->Images->Spaceships下的一個(gè)圖像作為Player榨了,這里選擇了一個(gè)紅色的飛船,并將其拖動(dòng)到Hierarchy面板中攘蔽。在Inspector面板中龙屉,為了讓飛船實(shí)現(xiàn)碰撞等物理效果,為其添加剛體屬性满俗,只不過這里我們選擇添加Rigidbody 2D转捕,即選擇Add Component,找到或者搜索該Component之后添加唆垃。
顯然五芝,我們需要將它的Gravity(重力)置零,為了不讓其在受到一小點(diǎn)點(diǎn)的力后運(yùn)動(dòng)起來停不下來辕万,將其Friction(摩擦力)設(shè)置一個(gè)合理的值枢步,這里設(shè)置為2,Angular Friction(角摩擦)可以保持0.05的預(yù)設(shè)值渐尿。
接下來就可以體會(huì)到Playground框架的強(qiáng)大之處醉途,因?yàn)樗鼮槲覀儨?zhǔn)備了各種各樣的腳本,運(yùn)用這些腳本可以直接實(shí)現(xiàn)很多游戲情景砖茸,而我們要做的只是將對(duì)應(yīng)的腳本添加給對(duì)應(yīng)的GameObject隘擎,并且設(shè)置腳本需要的public屬性的值,也就是在Inspector面板中設(shè)置這些值即可凉夯。
首先货葬,為了讓飛船能夠運(yùn)動(dòng)起來,為其添加一個(gè)推動(dòng)力的腳本:Push劲够,你可以選擇從Assets中的Scirpts目錄下找到這個(gè)腳本拖動(dòng)到Inspector面板中震桶,也可以在Add Component中直接搜索添加該腳本。然后更改Push Strength(推力大性俨住)為適當(dāng)?shù)闹的岫幔@里置為8,Axis(推力的方向)為Y。此時(shí)運(yùn)行游戲可以通過按下空格鍵使飛船運(yùn)動(dòng)起來淤堵。
再添加Rotate腳本寝衫,這個(gè)腳本可以設(shè)置飛船的旋轉(zhuǎn),很明顯Type Of Control設(shè)置控制方式拐邪,這里選擇WASD控制慰毅,Speed選項(xiàng)控制旋轉(zhuǎn)速度,這里設(shè)置為2扎阶,因?yàn)槲也幌矚g操作太靈敏汹胃。
這里還給飛船增加了一點(diǎn)兒可愛的屬性,找到Assets->Prefabs->Particles下的P_Flame东臀,拖動(dòng)到Hierarchy成為飛船的子物體着饥,讓其跟隨飛船運(yùn)動(dòng),然后通過選擇和平移調(diào)整一個(gè)合適的位置加到飛船的尾部惰赋。
設(shè)置Camera
設(shè)置Camera宰掉,改變其視野范圍(調(diào)整Frame Size,此處設(shè)置為10)赁濒,并添加一個(gè)Follow腳本使其固定跟隨一個(gè)物體轨奄,直接點(diǎn)擊Camera中的Add Camera Follow script即可添加,然后將我們的Player也就是飛船拖動(dòng)到Target作為其參數(shù)即可拒炎。
注:如果想要回到最原始的Components挪拟,可以在頂部菜單欄的Playground下選擇Turn Playground Off
添加障礙物
選擇Assets->Images->Asteroids下的一個(gè)石頭圖像作為障礙物,同樣需要為其添加Rigidbody 2D屬性击你,修改其中的值玉组。
在物理學(xué)中我們知道,如果一個(gè)物體沒有受到任何摩擦力果漾,在其受到一個(gè)力從而獲得一個(gè)初速度后會(huì)一直以這個(gè)速度運(yùn)動(dòng)下去球切,所以為了避免這種情況的發(fā)生谷誓,我們還是需要為其Friction賦予一個(gè)合理的值绒障。
添加Collider
為了有碰撞效果,為飛船和石頭均添加Collider屬性
此時(shí)運(yùn)行游戲捍歪,會(huì)發(fā)現(xiàn)飛船可以撞動(dòng)石頭
添加計(jì)分機(jī)制
為飛船添加一個(gè)Health System(健康系統(tǒng))户辱,其實(shí)就是我們常說的這個(gè)東西還有多少滴血,直接添加Health System腳本就行糙臼,可以看到庐镐,我們可以預(yù)設(shè)生命值,這里默認(rèn)為3
飛船碰撞到了石頭变逃,飛船的生命值就減少一必逆,這需要我們?yōu)槭^添加Modify Health腳本,然后看到有兩個(gè)可選參數(shù),第一個(gè)Destroy When Activated(起作用時(shí)銷毀)如果選中的話就會(huì)在石頭起到“減血”作用后銷毀石頭名眉,這里不選中粟矿,第二個(gè)Health Change即為對(duì)生命值的變化,這里設(shè)置為-1很合理损拢。
添加UI
為了讓生命值和分?jǐn)?shù)顯示出來陌粹,我們?yōu)镠ierarchy目錄添加Assets下的Prefabs下的UserInterface,UI自動(dòng)顯示在了游戲界面中福压。
為了讓Untiy清楚生命值和分?jǐn)?shù)都記錄的是誰的掏秩,這里需要為Player添加一個(gè)Player的Tag,添加Tag已經(jīng)在上一篇中詳細(xì)地提到了荆姆。
此時(shí)運(yùn)行游戲蒙幻,會(huì)在你的生命值消耗完時(shí)顯示Game Over
添加勝利條件
到什么時(shí)候才算勝利呢?UI Script處可以設(shè)置胆筒,比如這里默認(rèn)的為一個(gè)玩家杆煞、計(jì)分制、5分為勝利:
創(chuàng)建打擊物體
為了不讓我們的飛船顯得太過于脆弱腐泻,為其添加發(fā)射激光的功能决乎。
這里選擇Assets->Images->Projectiles下的LasersMid作為發(fā)射的激光,拖動(dòng)到Hierarchy下派桩。
為其添加Rigidbody 2D和capsule Collider 2D(膠囊狀的碰撞器)使其擁有碰撞屬性构诚,正如上一篇中所提到的,還需要選中Is Trigger一項(xiàng)铆惑。
Playground框架還為我們準(zhǔn)備了Bullet(子彈)腳本使其在特定條件下產(chǎn)生一個(gè)該對(duì)象的引用范嘱,即發(fā)射一發(fā)子彈。
添加了Bullet腳本后的激光束员魏,將其拖動(dòng)回Assets下的Prefabs目錄下成為一個(gè)預(yù)設(shè)體丑蛤。
現(xiàn)在有了子彈,還需要一個(gè)發(fā)射子彈的機(jī)槍撕阎,我們?cè)陲w船下新建一個(gè)空的子物體受裹,將其命名為BulletShooter,將其拖動(dòng)至飛船的頂部也就是發(fā)射的地方虏束。
為剛創(chuàng)建的BulletShooter添加一個(gè)Object Shooter的腳本棉饶,在Inspector面板中設(shè)置其參數(shù)。
Prefab To Spawn(要發(fā)射的預(yù)設(shè)體)當(dāng)然是拖動(dòng)我們已有的Prefab下的子彈預(yù)設(shè)體到這里作為參數(shù)镇匀,Key To Press是發(fā)射的按鍵照藻,這里設(shè)置為W鍵,Creation Rate是產(chǎn)生的速度汗侵,這里設(shè)置為0.2幸缕,Shoot Speed為發(fā)射速度群发,這里設(shè)置為10,shoot Direction為發(fā)射方向发乔,顯然是沿Y方向發(fā)射也物,所以將X設(shè)為0,Y設(shè)為1列疗。
射擊中石頭時(shí)石頭就需要消失并且我們要得分滑蚯,所以為石頭再添加一個(gè)腳本:Destory For Points,這個(gè)腳本使得物體被擊中時(shí)銷毀并為我們的Player增加分?jǐn)?shù)抵栈,Points Worth即其所價(jià)值的分?jǐn)?shù)告材,這里我們?cè)O(shè)置為0,因?yàn)椴⒉幌朐趽糁惺^后得到分?jǐn)?shù)古劲。
添加收集體
為游戲添加一些在太空中漂浮的外星人斥赋,用我們駕駛的飛船去收集這些外星人,收集到的外星人就進(jìn)入飛船(消失)产艾,看起來很簡(jiǎn)單了疤剑。
選擇Assets->Images->Creatures下的Alien1作為外星人,顯然它需要擁有以下的Component:
- Rigidbody 2D:剛體屬性
- Polygon Collider 2D:碰撞機(jī)屬性
- Auto Rotate:自動(dòng)旋轉(zhuǎn)
再添加一個(gè)Collectable(可收集的)腳本闷堡,這個(gè)腳本表示這是一個(gè)可以被收集的物體隘膘,Points Worth表示收集到后得到的分?jǐn)?shù),這里默認(rèn)1不變杠览。
這時(shí)候運(yùn)行游戲看一下會(huì)發(fā)現(xiàn)收集外星人后Score會(huì)增加弯菊。
完善游戲
最有就很簡(jiǎn)單了,對(duì)石頭和外星人進(jìn)行復(fù)制(Duplicate)踱阿,然后任意擺放管钳,如何設(shè)計(jì)游戲關(guān)卡就是見仁見智的問題了,為了能夠勝利软舌,要使得外星人的個(gè)數(shù)多于在UI中設(shè)計(jì)的勝利條件的數(shù)值哦才漆。
關(guān)于文檔
在引入Playground框架后,可以在Assets文件夾下發(fā)現(xiàn)Documentation目錄佛点,該目錄有關(guān)于Playground框架的每一個(gè)腳本的具體功能和參數(shù)的設(shè)置方法醇滥,非常值得參考。
Cheatsheets
參考資料:https://unity3d.com/learn/tutorials/s/unity-playground
本節(jié)內(nèi)容的完整官方教程視頻(英文無字幕)與官方文檔分享:https://pan.baidu.com/s/1MyITuPbK6_zO8rtK_i81pg 提取碼:7xti
轉(zhuǎn)載請(qǐng)注明出處恋脚,本文永久更新鏈接:https://blogs.littlegenius.xin/2019/02/20/Unity中使用Playground框架輕松制作2D游戲/