iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 1
4

(本篇文章網誌版:http://shineright.blogspot.tw/2016/11/day-1-it.html)

前言

「在一個繁星點點、無風無雲的夜晚,一群人在夜空下高歌。當他們唱到最高潮:『我要和天一樣高…』時,一顆流星恰好劃過天際。這群人誤打誤撞的願望頓時實現,他們四肢不斷延伸、再延伸,最後貫穿雲層,邁向星空,展開未知的旅程……」

http://ithelp.ithome.com.tw/upload/images/20161201/20103149jjs8QDNfvp.png
(←示意圖)

我知道這個故事極度低能,但請原諒還有兩個遊戲Project同時在進行的我,腦袋實在不太夠用。

http://ithelp.ithome.com.tw/upload/images/20161201/20103149EQyOglyhRi.png
http://ithelp.ithome.com.tw/upload/images/20161201/20103149yE8HMPi8MQ.png

(↑另外進行中的兩個Project……有圖為證)

玩法

這次要做的遊戲跟大家小時候在Nokia3310上玩的「星際大戰」有87%相似。不同的是,主角不是穿梭在外太空的飛行船,而是想要「和天一樣高」的人們。

在他們不斷長高,邁向浩瀚蒼穹時,將遇到許多敵人(例如:蜜蜂、落石、鳥鳥、飛機等等),玩家必須觸控螢幕的左/右半邊來閃避敵人。途中,有機會接到繫在降落傘上掉落的裝備。不同裝備可發射不同的子彈或有不同的功能。撞到敵人將損失一格生命,用完三格生命後遊戲結束,分數依照長成的高度計算。

http://ithelp.ithome.com.tw/upload/images/20161201/20103149v1pJ7cqSSu.png
(←用繪圖軟體畫的遊戲畫面假想圖)

大綱

在進入正題前,先列一下這三十篇文章的大綱,但因為我沒有事先規劃,做到哪想到哪,所以不一定完全遵照大綱。

  • Unity操作介面
  • 分割Sprite
  • 鍵盤操控角色
  • 接裝備、發射裝備
  • 敵人出生、敵人發射子彈
  • 子彈、敵人、主角之間的碰撞
  • 開始、結束、暫停畫面和其他UI
  • 遊戲背景
  • 音效
  • 紀錄分數、排行榜
  • 加入廣告
    做完遊戲後,我應該會把整個Project放到Github上,敬請期待。

===以下Day 1文章正式開始===

Unity Editor操作介面

廢話說完,終於進入正題了。先來介紹Unity的操作介面。
開一個2D的Unity Project,在上排的Windows選單選Layouts → Default,便能看到如下的介面。

http://ithelp.ithome.com.tw/upload/images/20161201/20103149og0UJVeJUG.png

大致介紹一下每個欄位的功能:

Scene

用Unity製作遊戲,通常會把一個遊戲分為許多場景(Scene),每個場景都可存入副檔名為.unity的檔案。遊戲選單、遊戲的每個關卡等等都可獨立成為一個場景,並以程式碼相互切換。Scene視窗主要用於場景佈置和關卡設計,在這個視窗內可以自動移動、縮放或旋轉組成一個場景的遊戲物件(Game Object)。左上角的按鍵:

http://ithelp.ithome.com.tw/upload/images/20161201/20103149G7sgZ195m7.png

或W、E、R鍵能分別用來控制遊戲物件的座標(Transform)、旋轉角度(Rotation)以及縮放比例(Scale)。

座標:
http://ithelp.ithome.com.tw/upload/images/20161201/201031499B7iPiDySs.png

旋轉角度:
http://ithelp.ithome.com.tw/upload/images/20161201/20103149XqYUfEIfkV.png

縮放比例:
http://ithelp.ithome.com.tw/upload/images/20161201/20103149DcwLcsj9SF.png

Hierarchy

位於左側的Hierarchy欄顯示所有存在場景上的遊戲物件。點擊右鍵或上方的Create鈕可以建立新的遊戲物件。在遊戲物件上按右鍵→delete則可刪除該遊戲物件。另外,在Hierarchy欄還可任意把一個遊戲物件拖至另一個遊戲物件上,讓兩個遊戲物件產生父子(parent child)關係。移動、旋轉或縮放一個父遊戲物件會連帶影響子遊戲物件的座標。
點選Hierarchy欄中的Game Object,再把滑鼠游標移到Scene視窗上按f鍵(f for focus),可使Scene視窗聚焦於該遊戲物件。以此可輕鬆選取在Scene視窗較難選取的遊戲物件。
預設的場景會自動產生一個名為Main Camera的遊戲物件,這就是把場景「錄」到遊戲畫面用的攝影機(下面Game欄會詳述)。

http://ithelp.ithome.com.tw/upload/images/20161201/20103149kKklJYjAxF.png

Game

Game視窗顧名思意是顯示遊戲畫面用的。按上方的按鈕
http://ithelp.ithome.com.tw/upload/images/20161201/20103149YmuslRC2qU.png

可使Unity進入遊戲預覽模式(Play Mode)。Play Mode可實際測試場景的運作,甚至可在Inspector(以下詳述)或Scene欄中即時調整遊戲物件的數值或座標,然而調整後的數值離開Play Mode後便會復原。
要將Scene中的物件顯示於Game視窗,必須在場景上放置擁有Camera Component(以後將詳述Component)遊戲物件。在Hierarchy欄中可以輕易新增Camera。

Project

下方的Project欄其實就是一個檔案瀏覽器,用來管理所有製作遊戲需要的檔案(即Assets),如音樂、圖片、3D模型、遊戲腳本程式(Script)、預設遊戲物件(Prefab)等等。
通常會在Assets資料夾建立子資料夾來整理眾多的檔案,如下圖所示。
http://ithelp.ithome.com.tw/upload/images/20161201/20103149EZ86nTYx2A.png

Inspector

Inspector欄可以看見所有關於一個遊戲物件的資料──它的名稱(Name)、標籤(Tag)、圖層(Layer)、座標、擁有的元件(Component)等等。(關於Tag、Component以後會詳細介紹。)在Inspector欄中可輕易更動一個遊戲物件的數值,就算進入Play Mode也一樣(但離開Play Mode後數值將重置)。

http://ithelp.ithome.com.tw/upload/images/20161201/20103149x9IRNaCE8R.png

Console

Console欄會顯示遊戲中的錯誤訊息或警告訊息。此外,也可在Script中加入print()或Debug.Log()以在Console欄顯示除錯訊息。(使用print()函數的類別(class)需繼承(inherit)自MonoBehavior類別。以後寫Script時會再詳加說明)
http://ithelp.ithome.com.tw/upload/images/20161201/20103149HcUQWxMYld.png

繪圖進度

除了寫程式外,做遊戲還得畫畫、做音樂。但我畫畫和音樂程度頂多和小學生差不多,所以這30天不會寫任何關於遊戲美術和遊戲音樂的文章,只會在每篇結尾處分享自己的繪圖進度。
http://ithelp.ithome.com.tw/upload/images/20161201/20103149qJfEXbSdH4.png

今天完成所有可愛(?)的角色,以及他們撿到裝備(開心)和受到傷害(傷心)的表情。

本篇完。鐵人賽的旅程還要持續下去……


下一篇
Day 2: 分割遊戲圖片--Sprite Editor
系列文
我要和天一樣高!!!(Unity 2D手機小遊戲開發日誌)30

尚未有邦友留言

立即登入留言