2016年12月4日 星期日

Day 5: Game Object & Component

前幾篇文章我用短短的程式碼和簡單的設定就完成了分割Sprite、角色移動和Main Camera大小設定。接著該來做遊戲中裝備掉落、接獲裝備的系統了。

先簡單介紹一下我想要的功能大概如何運作:


在遊戲進行中,有一定機率會從螢幕上方掉落裝備。


如果主角接到掉落的裝備,會把它戴在頭上。(戴在頭上的裝備會持續發射子彈或擁有其他功能,不過那些留到之後再做)


如裝備離開螢幕,則自動移除該裝備。


在動手做之前,我先來解釋一下之後會大量用到的Game Object和Component之間的關係。

在Unity中,每個場景(Scene)都是由許多Game Object組成的。Game Object本身沒有什麼功能,真正的功能存在於Component中。所以為了使Game Object達成特定的功能,就必須為Game Object加上(Attach)擁有特定功能的Component。例如,點一下先前做的角色,可以在Inspector中看到它所擁有的Component,包括Transform、Sprite Renderer和我們用C#寫的Player Movement (Script)。每個Game Object都會有一個Transform Component(UI GameObject 除外),用來控制與顯示Game Object的位置(Position)、旋轉角度(Rotation)和縮放比例(Scale)。除了Transform Component外,其他Component通常都會有一個「打勾」的符號在旁邊


點擊打勾的符號可以任意啟用(enable)或關閉(disable)該Component。

做個小實驗。進入Play Mode,如果把主角的Player Movement (Script) Component關掉,就無法用鍵盤控制角色。如果把Sprite Renderer關掉,角色的圖片就會消失。

了解Game Object和Component之間的關係後,馬上來為遊戲角色增加新的功能(也就是Component)。

選取我先前做好的角色,按在Inspector最下方的「Add Component」按鈕,選Physics 2D→Box Collider 2D。現在該角色就擁有Box Collider 2D Component了。

Box Collider 2D (以及所有的Collider 2D 和 Collider) 主要用來偵測碰撞。Collider常常會搭配Rigidbody/Rigidbody 2D一起使用,來模擬剛體運動與物理碰撞。

在Box Collider 2D中,點一下Edit Collider旁邊的按鈕,可以在Scene中調整Collider的範圍(即綠色的框框)。稍微把框框往內拉一點,這就是主角可以偵測是否接到掉落裝備的有效範圍了。


另外,在Box Collider 2D Component中,把Is Trigger欄打勾,使該Box Collider 2D成為一個Trigger。Trigger和原本的Collider最大差異是,Collider無法穿透。當兩個Collider互相碰觸(且擁有Rigidbody 2D Component),則會互相彈開。Trigger可以穿透,通常用於偵測兩個Trigger是否相交,或者,是否有其他Collider進入該Trigger的範圍。(Trigger和Collider另一個差別在於Scripting,它們會使用不同的Event Function。之後再說明。)

幫該角色增加Box Collider 2D是為了偵測落至它身上的裝備,所以用Trigger就好了。

繪圖進度

今天忙著做動開始動畫……遊戲本身好像沒有什麼進度,不過動畫快完成了!!!

明天繼續。

沒有留言 :

張貼留言