簡單的介紹與起步
Unity的Playground是一個用來制作擁有物理引擎的2D游戲開發框架(framework),可以說非常適合初學者了,而且使用Playground框架制作2D游戲不需要編碼的工作,單純在Unity的編輯器中就可以完成,因為Playground提供了很多但任務化的Components,這些Components很容易被結合起來使用,從而得到各種各樣的功能。
開始創建游戲
創建游戲的過程和上一節中的創建方式一樣,只是要將游戲設置為2D,這里我們創建一個名為Playground2D的游戲項目。
引入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框架已經為我們準備了很多資源,主要的資源集中在Scripts,打開這個文件夾可以發現很多已經寫好的可以直接使用的腳本。
創建游戲背景
在上一篇文章中出現的內容將不詳細介紹,這里將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。此時運行游戲可以通過按下空格鍵使飛船運動起來。
再添加Rotate腳本,這個腳本可以設置飛船的旋轉,很明顯Type Of Control設置控制方式,這里選擇WASD控制,Speed選項控制旋轉速度,這里設置為2,因為我不喜歡操作太靈敏。
這里還給飛船增加了一點兒可愛的屬性,找到Assets->Prefabs->Particles下的P_Flame,拖動到Hierarchy成為飛船的子物體,讓其跟隨飛船運動,然后通過選擇和平移調整一個合適的位置加到飛船的尾部。
設置Camera
設置Camera,改變其視野范圍(調整Frame Size,此處設置為10),并添加一個Follow腳本使其固定跟隨一個物體,直接點擊Camera中的Add Camera Follow script即可添加,然后將我們的Player也就是飛船拖動到Target作為其參數即可。
注:如果想要回到最原始的Components,可以在頂部菜單欄的Playground下選擇Turn Playground Off
添加障礙物
選擇Assets->Images->Asteroids下的一個石頭圖像作為障礙物,同樣需要為其添加Rigidbody 2D屬性,修改其中的值。
在物理學中我們知道,如果一個物體沒有受到任何摩擦力,在其受到一個力從而獲得一個初速度后會一直以這個速度運動下去,所以為了避免這種情況的發生,我們還是需要為其Friction賦予一個合理的值。
添加Collider
為了有碰撞效果,為飛船和石頭均添加Collider屬性
此時運行游戲,會發現飛船可以撞動石頭
添加計分機制
為飛船添加一個Health System(健康系統),其實就是我們常說的這個東西還有多少滴血,直接添加Health System腳本就行,可以看到,我們可以預設生命值,這里默認為3
飛船碰撞到了石頭,飛船的生命值就減少一,這需要我們為石頭添加Modify Health腳本,然后看到有兩個可選參數,第一個Destroy When Activated(起作用時銷毀)如果選中的話就會在石頭起到“減血”作用后銷毀石頭,這里不選中,第二個Health Change即為對生命值的變化,這里設置為-1很合理。
添加UI
為了讓生命值和分數顯示出來,我們為Hierarchy目錄添加Assets下的Prefabs下的UserInterface,UI自動顯示在了游戲界面中。
為了讓Untiy清楚生命值和分數都記錄的是誰的,這里需要為Player添加一個Player的Tag,添加Tag已經在上一篇中詳細地提到了。
此時運行游戲,會在你的生命值消耗完時顯示Game Over
添加勝利條件
到什么時候才算勝利呢?UI Script處可以設置,比如這里默認的為一個玩家、計分制、5分為勝利:
創建打擊物體
為了不讓我們的飛船顯得太過于脆弱,為其添加發射激光的功能。
這里選擇Assets->Images->Projectiles下的LasersMid作為發射的激光,拖動到Hierarchy下。
為其添加Rigidbody 2D和capsule Collider 2D(膠囊狀的碰撞器)使其擁有碰撞屬性,正如上一篇中所提到的,還需要選中Is Trigger一項。
Playground框架還為我們準備了Bullet(子彈)腳本使其在特定條件下產生一個該對象的引用,即發射一發子彈。
添加了Bullet腳本后的激光束,將其拖動回Assets下的Prefabs目錄下成為一個預設體。
現在有了子彈,還需要一個發射子彈的機槍,我們在飛船下新建一個空的子物體,將其命名為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。
射擊中石頭時石頭就需要消失并且我們要得分,所以為石頭再添加一個腳本:Destory For Points,這個腳本使得物體被擊中時銷毀并為我們的Player增加分數,Points Worth即其所價值的分數,這里我們設置為0,因為并不想在擊中石頭后得到分數。
添加收集體
為游戲添加一些在太空中漂浮的外星人,用我們駕駛的飛船去收集這些外星人,收集到的外星人就進入飛船(消失),看起來很簡單了。
選擇Assets->Images->Creatures下的Alien1作為外星人,顯然它需要擁有以下的Component:
- Rigidbody 2D:剛體屬性
- Polygon Collider 2D:碰撞機屬性
- Auto Rotate:自動旋轉
再添加一個Collectable(可收集的)腳本,這個腳本表示這是一個可以被收集的物體,Points Worth表示收集到后得到的分數,這里默認1不變。
這時候運行游戲看一下會發現收集外星人后Score會增加。
完善游戲
最有就很簡單了,對石頭和外星人進行復制(Duplicate),然后任意擺放,如何設計游戲關卡就是見仁見智的問題了,為了能夠勝利,要使得外星人的個數多于在UI中設計的勝利條件的數值哦。
關于文檔
在引入Playground框架后,可以在Assets文件夾下發現Documentation目錄,該目錄有關于Playground框架的每一個腳本的具體功能和參數的設置方法,非常值得參考。
Cheatsheets
參考資料: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游戲/