< Return to Video

Unity 4.3 - 2D Game Development Walkthrough

  • 0:00 - 0:04
    Unity 4.3 我們發佈了第一階段的2D工具
  • 0:04 - 0:08
    為此,我們用這個工具做了一個2D範例
  • 0:08 - 0:12
    這個2D範例叫做"鐵橋塔防"
  • 0:12 - 0:16
    描述倫敦鐵橋被外星人入侵的故事
  • 0:16 - 0:23
    範例完全用2D圖片和物理來呈現
    讓你了解這些元素如何在Unity裡組合
  • 0:23 - 0:32
    影片會說明範例裡的背景、前景、角色、特效
    鏡頭追跡、動作和腳本程式是如何製作的
  • 0:32 - 0:36
    開始之前,先來聊聊基本的Unity 2D工作
  • 0:37 - 0:43
    首先,當要製作2D專案,你應該先設定工作環境為2D
  • 0:43 - 0:47
    可以在建立新專案時在下拉選單設定
  • 0:47 - 0:53
    或是在開發中到Edit - Project Settings - Editor調整
  • 0:53 - 1:00
    這代表預設情況下,輸入的材質會
    被視為2D圖片,場景視圖也會預設為2D
  • 1:00 - 1:04
    這個新的2D模式會採用完全的
    正視圖視角來呈現你的2D遊戲
  • 1:04 - 1:10
    同時也會把右上角的3D小圖示都隱藏
    讓工作空間更大
  • 1:10 - 1:17
    除此之外,Unity 2D的工作流程
    是和現有的3D流程整合在一起的
  • 1:17 - 1:23
    如果你已經會操作原本的Unity
    那Unity 2D會很好上手
  • 1:23 - 1:27
    值得一提的是,你也可以混搭2D和3D共用
  • 1:27 - 1:33
    所以如果你想要有3D元素在你的2D遊戲裡
    或2D元素在3D遊戲裡都沒有問題
  • 1:33 - 1:38
    現在來看看範例如何建立一個關卡
  • 1:39 - 1:45
    我們一開始勾勒關卡設計雛形
    然後到Photoshop裡面去把每個圖層做出來
  • 1:45 - 1:51
    然後輸出這些圖層
    成為新的Sprite類型導入Unity
  • 1:58 - 2:07
    為了呈現出背景的視差,我們做了一些
    背景元素在Sorting Layer裡
  • 2:07 - 2:10
    這是一個2D工具的新功能
  • 2:10 - 2:17
    當所有背景指定到這一層後
    我們可以在圖片著色器的圖層排序它們
  • 2:17 - 2:21
    調好位置之後也可以把圖層鎖定不能編輯
  • 2:21 - 2:28
    這樣的話我們編輯前景元素的時候
    就不用擔心會不小心動到背景元素
  • 2:28 - 2:32
    可以從介面右上方的圖層選單來設定
  • 2:33 - 2:40
    由於背景只是裝飾用的,所以
    並不需要在圖片上放任何元件
  • 2:40 - 2:42
    將它們放到一個空的物件裡
  • 2:42 - 2:46
    並放入一個叫做叫做
    BackgroundParallax的腳本來處裡視差
  • 2:46 - 2:51
    更多的細節可以詳查這個已經註解的腳本
  • 2:55 - 2:59
    接下來製作角色活動的前景空間
  • 3:00 - 3:03
    我們設計了倫敦鐵橋和降落在中間的飛碟
  • 3:03 - 3:09
    主角處於一個敵人從天而降並到處亂竄的環境
  • 3:09 - 3:14
    因此,每一個前景元素都需要
    碰撞體(Collider)來讓主角在上面行走
  • 3:14 - 3:21
    大多數環境用方體碰撞就可以
    除了外型比較複雜的飛碟
  • 3:23 - 3:29
    Unity提供多邊形碰撞體(Polygon Collider)
    可以根據圖片外型自動產生多邊形碰撞體
  • 3:29 - 3:32
    甚至可以調整碰撞體的外型
  • 3:32 - 3:38
    你可以新增、移動或刪除節點
    調整到更適合行走的外型
  • 3:39 - 3:46
    為了排序前景元素我們建立了前景層
    設定顯示在背景之前
  • 3:49 - 3:51
    接下來看看主角
  • 3:54 - 4:04
    我們的主角也是在Photoshop裡面設計的
    一個四肢獨立類似卡通主角雷曼的角色
  • 4:04 - 4:06
    另外一個2D工具的新功能
  • 4:06 - 4:10
    是一個以圖表化的動畫工具
    可以在Photoshop裡繪製每一節點的圖
  • 4:10 - 4:14
    後面我們會介紹如何用這方法
    製造我們的天鵝
  • 4:15 - 4:20
    因為身體部位分開比較好控制動畫
    因此我們希望獨立每個身體部位
  • 4:20 - 4:28
    所以我們將身體部位獨立切開
    好讓Unity在輸入時容易拆離它們
  • 4:29 - 4:33
    這代表我們可以為圖片單獨製作動作
  • 4:33 - 4:41
    把這些部位放入建好的角色層
    然後改變Z軸深度來改變前後順序
  • 4:49 - 4:57
    把這些圖片都放入一個有控制腳本
    碰撞體、物理設定等等的物件
  • 4:57 - 5:07
    一旦做到這裡,就可以到動畫視窗給予圖片動作
    建立待機、跑、跳、射擊和死亡的動畫
  • 5:07 - 5:12
    使用動畫視窗裡新的分鏡表功能
    就可以簡單製作動作
  • 5:13 - 5:19
    我們在父物件建立一個動畫元件
    然後針對每一個子物件建立影格
  • 5:19 - 5:25
    移動指標到想要的影格後調整角色部位
    就會自動把變量錄到影格上
  • 5:27 - 5:35
    可隨時切換分鏡表和動畫曲線
    使得它更容易調整設計
  • 5:37 - 5:41
    這些動作建立好之後我們可以
    幫我們的角色設計控制狀態
  • 5:41 - 5:45
    讓我們用程式呼叫角色執行各種動作
  • 5:45 - 5:52
    因為不是驅動3D骨架,所以取消打勾Root Motion
  • 5:52 - 5:57
    也可以打勾Animate Physics如果
    動畫要和物理行為相互作用
  • 5:57 - 6:05
    為了在場景走動,主角腳上有圓形碰撞體
    和一個包覆整個身體的方形碰撞體
  • 6:05 - 6:09
    這樣他可以平順地行走和跳下場景
    跳起來的時候頭部也可以判定撞到
  • 6:10 - 6:16
    為了控制角色動作,我們寫了
    一個腳本透過2D物理引擎來移動
  • 6:16 - 6:21
    這代表在遊戲裡面可以指定主角和敵人
    讓遊戲動態更豐富的物理行為
  • 6:21 - 6:26
    我們用PlayerControl腳本來判斷角色的輸入
  • 6:26 - 6:32
    我們在此指定物理移動速度
    同時也把輸入的值送到動畫控制器
  • 6:32 - 6:40
    判定播放哪些動畫以及
    順暢的播放分鏡表上圖片的轉變
  • 6:40 - 6:44
    使用動畫控制建立圖片動態最大的好處是
  • 6:44 - 6:51
    可以調整動畫速度用來搭配物理速度
    不需要額外再作任何判定
  • 7:23 - 7:26
    FixedUpdate函式會檢查每一步物理運算
  • 7:26 - 7:33
    在這裡我們第一件要做的事情是
    把輸入的水平值傳給動畫的速度參數
  • 7:34 - 7:42
    在我們的狀態設定裡
    待機狀態到跑動需要速度參數大於0.1
  • 7:42 - 7:46
    當值成立時,動畫就會從待機切到跑步
  • 7:52 - 7:59
    要讓角色移動,讓它有Rigidbody2D元件
    就可以為它加力道移動
  • 8:00 - 8:08
    同時我們也根據輸入的水平值是
    大於0或小於0來處理角色面朝的方向
  • 8:08 - 8:15
    這是因為在Unity裡,按住左鍵會傳回-1
    而按住右鍵會傳回+1
  • 8:15 - 8:25
    根據輸入值呼叫一個簡單的翻轉函數
    來翻轉角色的X軸縮放,讓角色面向反方向
  • 8:27 - 8:31
    為了判定角色是否著地
    我們新增了一個Ground圖層
  • 8:31 - 8:35
    並指定給全部可行走的前景物件
  • 8:43 - 8:50
    然後使用2D裡面的Linecast函數
    檢查Ground圖層是否和角色的腳接觸
  • 8:50 - 8:57
    為了讓製作更容易,我們建立了
    一個空白的物件當作檢查地面的標準點
  • 8:57 - 9:03
    在該物件上增加一個小圖示
    我們就可以控制角色到地面的距離
  • 9:03 - 9:08
    就遊戲角度來看
    角色在地面時只能做跳的動作
  • 9:08 - 9:13
    更多關於角色控制的資訊
    可以查看範例腳本裡面的說明
  • 9:13 - 9:16
    影片稍後也會討論角色的武器
  • 9:16 - 9:20
    接下來看看相機如何追蹤角色
  • 9:21 - 9:28
    跟3D遊戲一樣,在2D遊戲裡
    鏡頭運鏡也左右著遊戲體驗
  • 9:28 - 9:34
    要呈現經典的2D遊戲運鏡
    我們參考了2D遊戲經典大作
  • 9:34 - 9:39
    任天堂或超任的超級瑪莉歐的鏡頭運作
  • 9:39 - 9:45
    在超級瑪莉歐世界裡鏡頭會水平移動
    除了封閉的空間或關卡邊緣
  • 9:45 - 9:49
    在這兩類區域裡角色小幅移動
    鏡頭不會追蹤
  • 9:49 - 9:54
    一旦角色移出區域
    鏡頭又會開始追蹤角色
  • 9:54 - 9:58
    超級瑪莉歐的相機
    用特定高度來進行垂直判定
  • 9:58 - 10:07
    但我們的遊戲沒有往上的長度
    比較像動作平台,所以不需要這類設定
  • 10:07 - 10:13
    因此我們的相機在垂直判定
    採用了和水平一樣的方法
  • 10:19 - 10:25
    請看看主相機裡的CameraFollow腳本
    了解鏡頭追蹤更完整的寫法和註解
  • 10:26 - 10:33
    遊戲中有許多特效
    但最重要的是主角殺死外星人的能力
  • 10:33 - 10:36
    主角會發射一個具有
    反作用力動畫的火箭筒
  • 10:36 - 10:39
    這個動畫由幾個部分組成
  • 10:39 - 10:48
    首先檢查輸入,當按下Fire鍵時
    產生一個火箭,播放音效並觸發火箭動畫播放
  • 10:48 - 10:50
    讓我們進一步分解這些步驟
  • 10:50 - 10:58
    為了可以播放其他動畫(跑步)時同時播放火箭發射
    我們在動畫控制器建立了Shooting的動畫層
  • 10:58 - 11:07
    將Weight屬性設為1,可以
    完全覆蓋基本層(Base Layer)所有的動作
  • 11:20 - 11:27
    我們可以從任何狀態中用程式
    觸發Shoot參數發射動畫
  • 11:27 - 11:31
    來看看負責這工作的Gun腳本
  • 11:33 - 11:37
    你可以看到我們寫了驅動事件
    觸發Shoot為True
  • 11:37 - 11:46
    觸發後會打開,在下一格重置為關
    就可以重複使用,對於射擊動作最好用
  • 11:46 - 11:51
    除了設定動畫,我們也從腳本中發射火箭
  • 11:51 - 12:01
    播放音效後根據角色的方向
    產生火箭並給它一個X軸的正或負速度
  • 12:01 - 12:05
    這個Gun腳本被放在主角身上的空物件
  • 12:05 - 12:12
    像這樣將腳本放到一個空物件上
    可以輕易的定位火箭發射位置
  • 12:12 - 12:20
    我們將物件放到火箭筒發射口
    然後以他自己的座標當作發射點
  • 12:40 - 12:47
    火箭本身有2D剛體
    我們給它一個速度讓它移動
  • 12:47 - 12:51
    它也有火焰噴射動畫和粒子系統做的煙霧
  • 12:53 - 12:56
    粒子系統也接受新的Sprite圖片
  • 12:56 - 13:04
    所以可以將煙霧的圖片切好後加到材質
    並指定到粒子系統的Texture Sheet Animation
  • 13:04 - 13:08
    就有煙霧特效讓粒子系統發射
  • 13:16 - 13:23
    當火箭命中敵人或環境時
    火箭本身會引起爆炸並被摧毀
  • 13:23 - 13:28
    爆炸是我們製作的爆炸動畫物件
  • 13:28 - 13:34
    排序位置在前景的最後面
  • 13:36 - 13:45
    要建立這類動畫,可以從專案點選圖片
    然後在屬性Sprite Mode選擇Multiple
  • 13:45 - 13:50
    這功能允許我們編輯圖片
    手動或是自動裁切圖片大小
  • 13:50 - 13:52
    一旦完成裁切後
  • 13:52 - 13:59
    只需要點擊Apply
    Unity會自動產生圖片並作為子物件
  • 14:00 - 14:02
    這就是火箭製作過程
  • 14:02 - 14:07
    稍後我們將在影片中討論
    殺死敵人的動畫技法
  • 14:07 - 14:12
    現在先讓我們回到主角
    看看如何處理血條補血和扣血
  • 14:12 - 14:19
    血條被定義為一個浮點數(Float)
    每次碰到敵人就會呼叫TakeDamage函式
  • 14:19 - 14:25
    為了避免觸發太快造成死亡
    我們用repeatDamagePeriod來間隔觸發時間
  • 14:27 - 14:31
    為了讓角色顯示受傷
    並容易從敵人手中逃脫
  • 14:31 - 14:35
    我們建立了受傷的動作
    並在物理上彈飛主角
  • 14:35 - 14:40
    要做到這點,TakeDamage函式
    會阻止角色跳躍
  • 14:40 - 14:42
    並從主角與敵人之間找到一個向量位置
  • 14:42 - 14:46
    指定一個物理力量往指定方向擊退
  • 14:46 - 14:55
    hurtForce是一個全域變數,可以隨時從介面調整
    而不用從腳本裡調整
  • 14:55 - 15:02
    除了擊退主角之外,我們同時
    也扣掉角色的血量並更新血條
  • 15:02 - 15:10
    為了呈現扣血,我們把血條的寬度縮減
    用一個公式計算讓綠色轉變到紅色
  • 15:10 - 15:15
    透過當下的血量和總量算出一個百分比
  • 15:15 - 15:22
    血條是由兩個圖片組成
    一個顯示血量,另一個顯示外框
  • 15:22 - 15:26
    這也是在Photoshop裡做的
    然後輸出兩個單獨的圖片
  • 15:26 - 15:34
    導入圖形的時候,設定圖形軸心在左邊
    所以當它按比例減少時,就會往左縮
  • 15:49 - 15:55
    這兩個圖片放在一個空物件底下
    給予一個簡單腳本,讓它顯示在角色頭上
  • 15:55 - 15:59
    將血條位置設定與角色相同
  • 15:59 - 16:03
    並加上偏移用的全域變數
    好在檢視介面進行調整
  • 16:16 - 16:23
    當主角血量為0時,設定碰撞體的isTrigger = true
    主角就會往下跌到水上
  • 16:23 - 16:28
    同時將主角排序推到UI層上
    主角會移到畫面最上層
  • 16:28 - 16:32
    UI層是我們製作的層
    是用來表示像UI的前面的物件
  • 16:32 - 16:34
    當腳色死亡時,我們有兩個動畫
  • 16:34 - 16:39
    一個叫Death,會失去帽子和槍
    另外一個叫Falling
  • 16:39 - 16:47
    用Exit Time當作動畫的切換條件
    一旦Death播完就會切到Falling動畫
  • 16:51 - 16:55
    最後,在播放死亡動畫時
    為了阻止玩家移動角色或射擊
  • 16:55 - 16:58
    我們會禁用PlayerControl和Gun腳本
  • 16:58 - 17:05
    由於Die函式是全域可以從任何地方呼叫
    例如玩家掉入水中
  • 17:05 - 17:12
    要在主角接觸水面時重置遊戲,我們
    用一個由觸發器和腳本組成的KillTrigger物件
  • 17:12 - 17:18
    在大多的情況下
    Remover腳本移除掉入河中的敵人
  • 17:18 - 17:21
    並播放一個水花動畫和音效
  • 17:21 - 17:24
    但如果是主角被觸發器偵測到時
  • 17:24 - 17:27
    就會呼叫PlayerHealth腳本裡的Die函式
  • 17:27 - 17:35
    並禁用CameraTracking同時將角色移出螢幕
    並呼叫co-routiene函數(停止2秒)
  • 17:35 - 17:37
    然後重生在出生點
  • 17:37 - 17:39
    接下來焦點轉移到角色生存
  • 17:39 - 17:42
    來看看它是如何生存
    和我們給予它甚麼生存工具
  • 17:42 - 17:50
    遊戲中有兩種幫助玩家的補給箱
    一種箱子是炸彈,另一種可以補血
  • 17:50 - 17:56
    補給箱由箱子和降落傘兩個部分組成
  • 17:58 - 18:04
    這兩個元素放入一個空白物件
    我們就可以一起觸發動畫
  • 18:04 - 18:08
    我們定位這兩個圖片
    降落傘的軸心位於父物件的中心
  • 18:09 - 18:15
    這樣動畫可以左右搖擺
    讓降落傘是浮在空中的感覺
  • 18:15 - 18:19
    然後增加一個剛體讓它有重力往下掉
  • 18:19 - 18:25
    箱子增加碰撞體用來探測它的著陸時機
    和玩家撿起的時機
  • 18:25 - 18:31
    著陸之後
    播放第二段動畫讓降落傘消失
  • 18:31 - 18:35
    跟遊戲其他地方一樣
    動畫器控制物件的狀態
  • 18:35 - 18:39
    我們可以看到預設的情況下
    它會播放FloatDown動畫
  • 18:39 - 18:43
    然後當Land = True時會切換到著陸狀態
  • 18:44 - 18:50
    在腳本裡,我們使用onTriggerEnter函數
    透過標記來檢測是否碰到地面
  • 18:50 - 18:55
    我們也將補給箱從父物件中分離
    並給它一個剛體
  • 18:55 - 19:01
    它就可以和環境互動
    比如降落在一個斜坡上就會斜停在坡上
  • 19:01 - 19:04
    接下來看看炸彈
  • 19:04 - 19:08
    撿起炸彈箱的動作是箱子上的
    BombPickup腳本處理的
  • 19:08 - 19:17
    透過角色身上的LayBombs腳本
    增減主角擁有的炸彈數量
  • 19:18 - 19:26
    LayBombs腳本負責檢查是否攜帶著炸彈
    並負責產生並放置炸彈
  • 19:27 - 19:36
    炸彈設有定時裝置,在爆炸之前
    透過BombDetonation裡的yield倒數計時
  • 19:37 - 19:40
    爆炸函式執行幾個動作
  • 19:40 - 19:44
    它會重置bombLaid參數
    允許產生另外一個炸彈箱
  • 19:44 - 19:50
    它會通知產生器補充新的炸彈箱
    並炸死範圍內的敵人
  • 19:51 - 19:53
    來看看最後一部分怎麼運作的
  • 19:53 - 19:57
    因為炸彈對敵人來說是致命的
    不管他們的生命值剩下多少
  • 19:57 - 20:03
    我們用Physics.OverlapCircleAll方法收集
    在爆炸範圍內所有標記為敵人的對象
  • 20:03 - 20:07
    然後為每一個敵人執行迴圈
  • 20:07 - 20:16
    設定他們的血量為0
    從爆炸地點到敵人算出一個向量並施加外力
  • 20:16 - 20:21
    一旦迴圈跑完,就可以播放視覺效果
  • 20:21 - 20:26
    播放一段音效同時摧毀炸彈
  • 20:27 - 20:29
    爆炸視覺效果有兩部分
  • 20:29 - 20:34
    主要部份是一個簡單的圓形
    短暫的出現後摧毀
  • 20:34 - 20:40
    第二部分是星星狀的粒子系統
    重複用相同圖片呈現火箭爆炸
  • 20:42 - 20:52
    效率上我們保持粒子系統持續在場景中
    需要時我們用程式移動到指定位置播放
  • 20:53 - 20:57
    這樣可以讓粒子系統存在記憶體裡
    使遊戲比較有效率
  • 20:57 - 21:05
    這麼做主要是因為這個範例
    同時只會有一個爆炸在場景中
  • 21:05 - 21:08
    因為玩家只能一次丟一個炸彈
  • 21:08 - 21:15
    這就是為什麼將粒子系統保持在場景中
    並重複播放的原因,比起建立後移除有效率
  • 21:16 - 21:22
    但如果是火箭爆炸,因為可以重複發射
    因此需要建立後移除
  • 21:22 - 21:26
    讓我們看看主角殺死敵人
    怎麼計算分數
  • 21:27 - 21:36
    這分為兩個部分,動畫顯示獲得100分
    以及增加UI的分數計算
  • 21:36 - 21:40
    分數動畫由1和0兩個數字組成
  • 21:40 - 21:43
    將它們放到場景中的空白物件
  • 21:43 - 21:49
    給予一個簡單的得分動畫
    並用程式讓它們在動畫完成後消失
  • 21:49 - 21:55
    我們放置摧毀腳本在動畫事件尾端
  • 22:06 - 22:14
    ScoreUI單純是個GUI文字元件
    帶有管理玩家分數的腳本
  • 22:14 - 22:21
    Score是全域變數,代表隨時可以
    檢查當敵人被殺死時增加100分
  • 22:21 - 22:25
    說到敵人,讓我們仔細看看他們
  • 22:25 - 22:28
    在我們的遊戲裡,有兩種類型外星敵人
  • 22:28 - 22:31
    一種是綠皮膚的鼻涕蟲
  • 22:31 - 22:35
    另一種是會搭著飛船保護自己
    的智慧型外星怪物
  • 22:35 - 22:37
    這些角色會共用一種腳本
  • 22:37 - 22:39
    因為他們行為相似
  • 22:39 - 22:46
    我們可以檢視它們的全域變數
    並設定不同的移動速度和生命
  • 22:47 - 22:49
    每個敵人都有自己的移動動畫
  • 22:49 - 22:54
    鼻涕蟲有一個可以活動的尾巴
    飛船內的敵人會前後搖擺移動
  • 22:56 - 23:02
    對鼻涕蟲來說,我們匯入圖形
    並把尾巴切為獨立圖形
  • 23:02 - 23:07
    這樣我們就可以單獨縮放它
    不會影響到整個圖片
  • 23:07 - 23:14
    軸心設定到右邊
    我們可以漂亮的伸展收縮尾巴
  • 23:16 - 23:20
    上下移動眼瞼
  • 23:20 - 23:25
    然後使用Z軸來排序
    眼睛就會在眼瞼底下了
  • 23:25 - 23:27
    就可以製作眨眼動畫
  • 23:29 - 23:34
    第二個外星人的動畫要簡單的多
    我們只需要前後轉動它
  • 23:36 - 23:41
    關於這些敵人的移動技術
    我們透過改變剛體的速率來移動它們
  • 23:41 - 23:48
    當它們遇到一個牆壁這樣的障礙物時
    會呼叫Physics.OverlapPoint函式來檢測
  • 23:48 - 23:56
    檢查是否有重疊到像是
    牆壁和兩邊的塔被標記的障礙物
  • 23:56 - 23:59
    當函式偵測到時,就會呼叫Flip函式
  • 23:59 - 24:04
    函式會翻轉敵人的X軸縮放
    讓它轉到不同方向
  • 24:04 - 24:11
    要殺死敵人,當敵人和火箭相撞時
    在撞擊時會呼叫Hurt函式
  • 24:15 - 24:19
    這個函式我們從敵人身上扣1點血
  • 24:19 - 24:23
    並持續呼叫函式保持敵人持續扣血
  • 24:23 - 24:27
    如果血條降到0,就會呼叫死亡函式
  • 24:31 - 24:34
    當他們死後,就會執行一些函式
  • 24:34 - 24:40
    會先停用所有的圖形渲染
    因為2D角色大多都有動畫
  • 24:41 - 24:47
    這是為了把動畫物件換成單張死亡圖片
  • 24:48 - 24:54
    我們在圖形渲染器將圖片改為deadEnemy
  • 24:54 - 24:58
    然後我們幫Score全域變數增加100
  • 24:58 - 25:04
    然後增加扭轉讓他們死亡時扭曲
  • 25:04 - 25:09
    因此我們要讓這些敵人死後
    掉入環境的河中
  • 25:09 - 25:14
    我們找到物件上所有碰撞體
    並設定IsTrigger = True
  • 25:14 - 25:17
    這樣他們就會穿過所有環境往下掉
  • 25:17 - 25:25
    然後播放死亡音效之後展示一個分數動畫
  • 25:28 - 25:30
    要將已死亡的敵人從場景中移除
  • 25:30 - 25:32
    我們使用killTregger物件
  • 25:32 - 25:35
    和前面所說的一樣
  • 25:35 - 25:37
    當任何角色接觸它時
  • 25:37 - 25:40
    將會引起一個水花動畫,並移除該物件
  • 25:40 - 25:46
    它們撞擊水面並播放
    一段附在水花動畫的音效
  • 25:46 - 25:51
    所以當我們產生水花動畫時
    同時也聽到音效
  • 25:55 - 25:59
    要完成遊戲關卡
    我們也用一些移動背景來裝飾
  • 25:59 - 26:02
    為了讓遊戲環境更顯動態
  • 26:02 - 26:07
    我們添加了一些飛翔的天鵝
    以及沿著河岸開的公車和計程車
  • 26:07 - 26:16
    首先是天鵝,它是在Photoshop裡面畫好後
    用Multiple Sprite導入圖片
  • 26:16 - 26:21
    Unity會自動裁切天鵝的每個圖片
  • 26:21 - 26:25
    分為不同的圖導入
    並把原圖當作父物件放在底下
  • 26:25 - 26:32
    因為這是個動畫組合,可以將所有的圖片
    一起拖到場景中,讓Unity幫我們生成動畫
  • 26:32 - 26:38
    瞧,天鵝的動畫已經準備好了
  • 26:38 - 26:43
    然後給天鵝一個剛體
    讓我們可以控制速度飛過螢幕
  • 26:43 - 26:47
    和公車和計程車一樣,天鵝已被存為預製物件
  • 26:49 - 26:55
    公車和計程車作法只需要
    在匯入圖形時分開車身和車輪
  • 26:55 - 26:58
    並製作一個簡單的擺動動畫
  • 26:58 - 27:04
    相同指定2D剛體到車子上
    就能夠驅動他們在螢幕上跑
  • 27:07 - 27:14
    公車、計程車和天鵝這三個物件
    我們用一個重複執行的腳本來製造它們
  • 27:14 - 27:22
    BackgroundPropsSpawner腳本
    同時也處理出生位置,出生頻率並給予速度
  • 27:22 - 27:31
    代表我們可以用這個腳本應用在三種對象
    預設出生點和屬性
  • 27:31 - 27:34
    要了解更多的細節,可以查看腳本中的說明
  • 27:34 - 27:40
    最後,要了解更多的背景動態
    我們使用了移動的雲朵、流動的河水和煙霧
  • 27:41 - 27:50
    我們在空白物件下放兩個背景圖片
    並使這些圖片緩慢飛過螢幕
  • 27:50 - 27:55
    因為這是個無限循環
    所以動畫永遠不會停
  • 27:59 - 28:01
    這就是我們遊戲的製作過程
  • 28:01 - 28:06
    我們希望這個教學讓你
    對如何用Unity開發2D遊戲有一定了解
  • 28:06 - 28:09
    未來我們也會製作更簡單的教學
  • 28:09 - 28:15
    也期待你們對於Unity4.3的反應
    迫不及待想看看你們的2D產品
  • 28:15 - 28:16
    謝謝觀看
Title:
Unity 4.3 - 2D Game Development Walkthrough
Description:

more » « less
Video Language:
English
Duration:
28:22

Chinese, Traditional subtitles

Revisions