2012年6月14日 星期四

Unity3D教學 - 使用免費工具來開發2D遊戲(教學四)


本文轉載自 www.rocket5studios.com,版權歸原作者所有,UnityBuster.blogspot.com整理翻譯。轉載請註明出處!

本教學內容是要來教你如何使用一些免費的軟體工具在Unity3D中製作2D遊戲. 此一教材共分成五個部分, 連結與大綱分列於下:





使用免費工具來開發2D遊戲 - 教學一: 介紹本教學使用的工具和Unity3D的插件
使用免費工具來開發2D遊戲 - 教學二: 製作sprite(圖素原件)和第一個level(關卡)
使用免費工具來開發2D遊戲 - 教學三: 製作一個角色動畫sprite(圖素原件)並與控制腳本連結
使用免費工具來開發2D遊戲 - 教學四: 製作一個 "pickup" 物品以及計分介面並和與計分腳本連結
5: 使用 "A*尋徑" 的啟始敵人智能判斷

使用免費工具來開發2D遊戲 - 教學四

本教學將要製作一個 "pickup" 撿拾物品以及計分介面並和與計分腳本連結

增加 "計分" 和 "撿拾" 腳本
現在我們要開始製作一個寶箱(gold chest)和計分, 等級, 生命支數之顯示介面:

先在此下載計分和撿拾腳本: http://www.rocket5studios.com/files/Rocket5_2DGame_Scripts_pt4.zip

解壓縮後將 scoring.cs 及 pickup.cs 複製到你的專案中的 Assets/Scripts 目錄

修改現有之腳本:
我們要先修改現有之腳本好讓新的腳本可以起作用:

打開 xa.cs 腳本並將第一行註解拿掉:
public static Scoring sc;

在 Start 函數, 將此行註解拿掉:
sc = (Scoring)(this.gameObject.GetComponent("Scoring"));

打開 Player.cs 腳本並找到 OnTriggerEnter 函數, 將此段註解拿掉:

if (other.gameObject.CompareTag("Pickup"))
{
    if (other.GetComponent())
    {
        other.GetComponent().PickMeUp();
        xa.sc.Pickup();
    }
}

製作 "撿拾" 的圖素原件
還記得教學二中我們已經將 pickup.png 加入 level 原件圖集(sprite atlas) 中並製作了一個指向此原件圖集的level container (存放箱 )物件, 因此我們不再需要令作設定就可開始製作撿拾之圖素原件

到 "Orthello" 目錄: Orthello -> Objects -> Sprites 之後將 Sprite 物件拖曳放入 "Hierarchy" 或 "Scene" 命名為類似 "Sprite (id=-3700)" 的名稱. 將此物件更名為 "pickup"
將我們在教學二中製作的 level 物件從 OT -> Containers 拖曳放入"Inspector" 的 "Sprite Container" 槽中.

此 sprite 會顯現出之前作的磚頭圖素原件, 原因是磚頭是在原件圖集(sprite atlas) 中的第一個圖. 修正它:
選取撿拾物件後, 用鼠標按住 Inspector 中的 "Frame Index"並向右拖曳到原件圖集中的16號的圖案. 現在物件就呈現中央有紅色方塊的白色方形外觀了.

調整物理碰撞:
圖素原件是一個方形, 我們希望在角色碰到白色部份才會撿拾到該物品:
勾選 "Collidable" 將碰撞屬性賦予此物件
打開 Physics 旁的下拉選單並選取 Custom
在 Box Collider, 將 Center Y 設為 -0.15, Center X 設為 0.8, Size Y 設為 0.5,  Size Z 設為 0.4

設定標籤 Tag:
被撿拾物件需要加上標籤(tag), 如此當角色碰觸到此物件時才會被觸發:

到 Edit -> Project Settings -> Tags 來產生新的 tag
在 Tags 清單中加入一新的 Tag (目前應該在 Element 3) 並命名為 "Pickup". 此名和 Player.cs 中相對應, 別取錯名了.
在 Hierarchy中選取 pickup 物件, 並點選Inspector 上端 Tags 旁之下拉式清單後選擇 "Pickup"

加入腳本並讓其成為一個 Prefab
將 Pickup.cs 腳本賦加到圖素原件上, 如此當角色碰觸到該原件時會被檢起. 同時也要將其變成一個 prefab 以方便將其加入所有其他關卡

將 Pickup.cs 腳本從 Project Scripts 目錄拖曳到 Hierarchy 中的 pickup 原件上.
將Hierarchy 中的 pickup 物件拖曳到 Project 中之 Prefabs 目錄以產生 prefab

將此 prefab 複製幾個並散放在關卡中.



增加介面文字
到目前的階段, 你已經可以撿寶了, 可是會看到一些錯誤訊息, 這是因為計分腳本還未加入, 因而無法正確顯示得分:
先要加入 Scoring.cs 腳本: 將 Scoring.cs 從 Project的 Scripts 目錄拖曳到 Hierarchy 中的 Scripts 物件. 你如果選擇 Scripts 物件, 你會看到 Scoring 腳本有許多槽等著加入 text 物件, 因此, 我們要先產生這些 text 物件
從下面連結下載檔案:http://www.rocket5studios.com/files/G7_Silkworm.zip
解壓縮後存入硬碟中. 這是我們要使用的字型, 你也可以找自己喜歡的使用
在 Assets 目錄中產生一新的目錄並命名為 "Fonts", 從硬碟中找出 "silkworm.ttf" 字型並將其複製到 Assets/Fonts 目錄中
在Unity中, 從 Project的Fonts目錄選擇 silkworm 字型後在 Inspector 將 Font Size 設為 26.

產生計分之 text





製作頂端邊界






製作全域(GLOBAL)的 Prefab







製作角色的 Prefab










本文轉載自www.rocket5studios.com,版權歸原作者所有,UnityBuster.blogspot.com整理翻譯。轉載請註明出處!