之前在第一節的時候有提到,我們打算在遊戲中新增一個物件,並且讓那個物件能夠被方向鍵控制移動,就這樣而已。那今天,就讓我們正式進入實作吧!
※教學內容若有錯誤,歡迎在下方留言向我反應,感謝你們~
※解釋元件功能時,我沒有提到的地方表示我沒有用過、不清楚那個功能的用法。
========================================================================
在真正開始製作之前,我們先來構思一下整個遊戲大概要長甚麼樣子:
1.2D卷軸遊戲
2.我想要有一個不知道長甚麼樣子的主角能夠被我的方向鍵控制。他可以:
a.左右行走
b.跳
3.我希望能有一塊地板可以撐住我的主角。
4.鏡頭可以跟著主角移動。
結束,就這樣。一開始我們要求不多,只想做出這樣簡簡單單的場景。
架構完畢,開始製作!
-----------------------------------------------------------------------------------------------------------------------------
我們先在Hierarchy上:右鍵→2D Object→Sprite
這個動作是為了要在場景上建立一個2D圖片。
你會看到雖然建立了Sprite,但是Scene與Game裡面都沒有出現任何東西,沒關係,這是正常現象。現在我們點選剛剛新增的「New Sprite」,在Inspector看一下新增的這個東西到底有哪些設定和屬性。
最上面中間的「New Sprite」輸入框,想必大家都知道,這就是這個物件的名字。隨時都可以改,你可以改成自己看得懂的名字,這裡我把它改成「Player」。
其他地方待會再說明,繼續往下看可以看到兩個區塊Transform、Sprite Renderer,這個就是之前說的「元件」
Transform:表示這個物件在遊戲場景中的位置、方向與大小,沒有意外的話,大部分的物件都會有這個元件。 Position:位置 Rotation:方向 Scale:大小 |
Sprite Renderer:Sprite物件必備的元件, Sprite:指定這個Sprite物件要顯示出哪個圖片。 Color:更改這個Sprite的整體顏色。 Flip:翻轉。看是要以X軸翻轉,還是以Y軸翻轉。 Material:材質。 Sorting Layer:圖層類別。可以為這個Sprite設定他所屬的圖層類別。 Order in Layer:圖層。數字越大,表示越上層。上層的圖將會覆蓋下層的圖。 ※Order in Layer是用來設定兩張圖片重疊時,哪張圖片要在哪張圖片的上方。如果兩張圖的圖層相同,又剛好重疊時,那麼在遊戲運行中的畫面,這兩張圖會有衝突。這兩張圖會有閃爍的現象。 |
為了讓我們能夠在場景中看到主角,我們要指定這個Sprite物件的圖片。
點擊在Sprite Renderer元件裡Sprite右邊小圈圈。
會跳出這個畫面:
因為我們還沒有匯入圖片素材,所以在這裡看到的所有圖片都是Unity的內建圖片。
那我們就隨便選一個「Background」當成我們的主角圖片好了。
現在,在Game中應該可以看得到一小點白色的東西了,它就是我們的主角。
為了讓他能被看得更清楚,我們回到「Player」的Inspector中調整他的大小。
我們把它Scale的X與Y都調成5。讓他在Game中能夠長這樣:
是不是有稍微變比較大一點啊?
我們想做的Player已經被我們創造出來了,再來要做出能夠支撐著Player的地板。
那就在Hierarchy上再新增一個Sprite,重新命名為「Floor」
然後這次我們把「UISprite」指定為它的圖片好了。
現在應該能在Game中看到它與剛剛建立Player時一樣,只有小小的一個點。
※注意,在Hierarchy中的階層應該是長這樣子的:
如果你長得是像類似這種:
那在之後套入腳本後,可能會有一些狀況發生。
階層錯誤表示物件的父子關係錯誤,所以如果你的Floor不小心被放到其他物件底下,那就按著它,把它拉到外面去就好了。
接著,我們把Floor的Transform稍微調整一下:
把它調整成這樣:
主要就是要讓主角下面有一個地板,然後主角在現階段懸空還沒有關係,就給他懸空吧! ((#
如果自己的畫面和我長得不太一樣也沒關係,只要位置有調整到就好,那個數值不是絕對的,以自己看到的畫面為主。
現在,我們場景中該有的都有了,現在開始要針對這兩個物件,新增它該有的屬性。
我們需要一個「Rigidbody 2D」的元件,讓玩家可以因重力而掉落。
另外,由於需要讓地板撐住玩家,必須讓他們有實際可以被碰撞的設定,所以要在這兩個物件都分別新增「Box Collider 2D」元件。
點選Player物件之後,在Inspector的最下面有一個「Add Component」的按鈕,顧名思義那個就是新增元件用的。
點進去之後,搜尋「Rigidbody 2D」,會看到這個東西:
不要懷疑,就按下去吧!
然後,照剛剛所說的,我們要在Player再新增一個元件。一樣點擊「Add Component」後搜尋「Box Collider 2D」會看到這個:
點下去新增之後,用一樣的方法,在Floor物件也新增一個「Box Collider 2D」元件吧!
※必須兩個物件都有「Box Collider 2D」才有辦法相互碰撞,如果只有一個物件擁有「Box Collider 2D」,那沒有「Box Collider 2D」的那個物件將會被穿透過去。
現在,這兩個物件的Inspector會變成這樣:
到這裡,我們就可以點選Unity最上面最中間的Play鈕進行遊戲試玩了。
怎麼樣?看到玩家自由落體掉到地上的感覺,有沒有覺得特別蠢,特別有趣啊?
但是,事實上還沒有結束,其實還有一些元件的細節需要設定,但是在那之前,我們先來看看這兩個新增的元件究竟是甚麼。
Rigidbody 2D:2D剛體。如果你想讓一個物件能夠具有重力、質量等性質,就需要用到這個元件。 Mass:質量。質量的大小,會影響兩個物體相撞時,哪邊會被撞飛。與現實中會遇到的狀況是相同的。 Gravity Scale:重力大小。重力越大,物體掉落速度越快。 Constraints:約束、強制。兩物體相撞時,物體會因衝撞而改變位置與方向,如果不希望它改變位置或方向,可以在這裡設定。 |
Box Collider 2D:2D碰撞器:一個物件被建立時,本身在場景中並不是一個實體,也就是說各個物件其實都是可以彼此穿透的。如果想讓他們能夠成為一個可以被碰撞的物體,就需要加上碰撞器。 Is Trigger:觸發器。不把它當實體,而是把它當成是一個觸發器。只要接觸到這個物體,就會執行某些動作。 ※勾選這個選項之後,這個物體將不再被視為一個實體,它與未設定碰撞器時的物件一樣可以被穿透。但是最大的不同就是它可以因為被碰觸而觸發某段程式。 Offset:碰撞器的中心位置。 Size:碰撞器的大小。 |
如果剛剛新增完元件時有稍微試玩的朋友應該可以看到這種畫面:
這樣看起來太不合理,主角像是懸空了一樣,我們要稍微調整一下元件的設定,讓實際的遊玩體驗看起來能更準確。
回到Scene後,我們雙擊Player,準備調整碰撞器「Box Collider 2D」的位置與大小。
雙擊之後,Scene的焦點會放在Player上:
我們需要調整碰撞器的大小......
讓它變成這樣:
灰色的線是這個物件的大小,綠色的線是碰撞器的大小。
讓綠色的線貼齊實際圖片的邊緣,這樣在實際遊玩的時候,看起來才不會太怪、看起來才不會感覺地板與主角隔著一道看不見的隔板。
同樣的,我們也將Floor的碰撞器大小稍微調整一下。
※如果數值與我相同但是畫面卻和我不一樣也沒關係,自己稍微調整一下就好。只要綠色的線能貼齊圖片,就是對的數值。
現在,我們重新試玩遊戲。
這樣看起來,正常多了吧XD!
到這裡,我們新增了兩個物件,分別為玩家與地板。並且在玩家上新增元件讓它能夠垂直落下,也分別在地板與玩家新增碰撞器,好讓地板能夠支撐住玩家。
最基本的場景配置我們已經完成了,剩下的就是要讓玩家能夠被我們操控。這部份我們就留到下次再做。
下次開始,我們將會進入程式的世界~
這次的教學就到這裡,我們下次再見!
========================================================================
【新手入門】
三、新增物件、場景&元件介紹