切換
舊版
前往
大廳
主題

【新手入門】三、新增物件、場景&元件介紹

澄鷹 | 2018-05-27 23:40:06 | 巴幣 4 | 人氣 2645

  之前在第一節的時候有提到,我們打算在遊戲中新增一個物件,並且讓那個物件能夠被方向鍵控制移動,就這樣而已。那今天,就讓我們正式進入實作吧!

  ※教學內容若有錯誤,歡迎在下方留言向我反應,感謝你們~ 

  ※解釋元件功能時,我沒有提到的地方表示我沒有用過、不清楚那個功能的用法。

========================================================================
  在真正開始製作之前,我們先來構思一下整個遊戲大概要長甚麼樣子:

  1.2D卷軸遊戲
  2.我想要有一個不知道長甚麼樣子的主角能夠被我的方向鍵控制。他可以:
    a.左右行走
    b.跳
  3.我希望能有一塊地板可以撐住我的主角。
  4.鏡頭可以跟著主角移動。

  結束,就這樣。一開始我們要求不多,只想做出這樣簡簡單單的場景。
  架構完畢,開始製作!

-----------------------------------------------------------------------------------------------------------------------------

  我們先在Hierarchy上:右鍵→2D Object→Sprite
  這個動作是為了要在場景上建立一個2D圖片

  你會看到雖然建立了Sprite,但是SceneGame裡面都沒有出現任何東西,沒關係,這是正常現象。現在我們點選剛剛新增的「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!

  到這裡,我們新增了兩個物件,分別為玩家與地板。並且在玩家上新增元件讓它能夠垂直落下,也分別在地板與玩家新增碰撞器,好讓地板能夠支撐住玩家。
  最基本的場景配置我們已經完成了,剩下的就是要讓玩家能夠被我們操控。這部份我們就留到下次再做。

  下次開始,我們將會進入程式的世界~

  這次的教學就到這裡,我們下次再見!


========================================================================

  【新手入門】



  三、新增物件、場景&元件介紹


送禮物贊助創作者 !
0
留言

創作回應

更多創作