【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閱讀 227,533評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370

推薦閱讀更多精彩內容