微信打飛機游戲?qū)崿F(xiàn)思路(unity)

在看完教程之后自己實現(xiàn),以為很簡單的地方結(jié)果思考了挺久,所以將自己的重做過程記錄下來以便二次學(xué)習(xí)。
  采用幀動畫形式實現(xiàn)微信打飛機游戲。
  工程文件Github地址: https://github.com/robotluo/BattlePlane

1.創(chuàng)建背景輪播以及主角動畫

背景輪轉(zhuǎn):
  使用兩張圖片交錯移動的方式實現(xiàn)背景輪播擂涛,當一張圖片下移出視圖,更新其位置置于頂端聊记。為了防止出現(xiàn)圖片銜接不流暢撒妈,需要取得圖片真實像素。素材背景圖片為 480*852排监,所以當每次出界時狰右,y軸需移動 852 * 2。
  這里實踐中出現(xiàn)了一個失誤舆床,當創(chuàng)建一個新腳本后棋蚌,又把腳本文件名改變,同時沒有改類名挨队。造成腳本不能添加到 Component 上谷暮,將類名做相應(yīng)改變即可。

主角動畫:
  使用兩張圖片變化來實現(xiàn)主角動畫盛垦。利用腳本控制 Sprite 展示不同的圖片湿弦,實現(xiàn)動態(tài)效果。

設(shè)置Sorting Layer:
  當有多個Sprite在同一層時腾夯,渲染出來的結(jié)果是不定的颊埃,所以需要設(shè)置 Sorting Layer 蔬充,層數(shù)越大,顯示越上層班利。
  還可以設(shè)置 Order in Layer饥漫,用于設(shè)置對同一層的顯示優(yōu)先級。同樣的肥败,數(shù)值越大趾浅,顯示越上層愕提。

2.子彈馒稍、敵機、獎勵物品的運動和隨機生成

子彈與獎勵自動生成與運行:
  將物品設(shè)置成 Prefabs浅侨,按一定時間間隔實例化物品纽谒。為物品添加腳本,讓其自己移動以及銷毀如输。

使用 GameObject.Instantiate() 方法創(chuàng)建實例:

GameObject.Instantiate (bullet, transform.position, Quaternion.identity);

InvokeRepeating 可以循環(huán)調(diào)用函數(shù):

InvokeRepeating ("fire", 1, speed);/(函數(shù)名鼓黔,延遲,循環(huán)間隔)

刪除自身:

Destroy (this.gameObject);

敵機的控制與子彈類似不见,超出視圖也需要銷毀澳化。只是敵機需要的視圖上方隨機生成,并且有 Hp 值稳吮。

隨機生成思路:
  在視圖上方創(chuàng)建一個空 GameObject 用于產(chǎn)生物品和敵機缎谷,按照一定時間間隔調(diào)用所寫生成函數(shù),同時隨機產(chǎn)生一個 X 坐標灶似。

3.主角移動列林、敵人碰撞時爆炸效果

主角控制:
  檢測觸摸位置,防止主角飛出屏幕酪惭。注意改變 position 時需要將屏幕坐標轉(zhuǎn)換為世界坐標希痴,不然會出現(xiàn)尺度不對。
檢測鼠標點擊:

Input.GetMouseButtonDown (0);//鼠標左鍵按下
Input.GetMouseButtonUp (0);//鼠標左鍵抬起

獲取鼠標點擊位置:

Input.mousePosition

子彈與敵人碰撞:
  添加碰撞器春感,當子彈與物體碰撞時砌创,判斷 Tag 是否為 Enemy ,如果是鲫懒,則調(diào)用物體的相關(guān)方法嫩实。

other.gameObject.SendMessage ("Hit");
//讓物體自己調(diào)用身上腳本的 Hit 方法,而不是 other 去調(diào)用

在 Hit 中利用 Hp 判斷此時敵機是被擊中還是摧毀刀疙,播放相應(yīng)的動畫舶赔。

4.武器切換、分數(shù)顯示谦秧、游戲暫停

武器切換:
  武器切換就是控制 top竟纳、left撵溃、right 三把槍是否發(fā)出子彈,Cancellnvoke 用于停止循環(huán)調(diào)用方法锥累。在不同情況下對三把槍的開關(guān)進行不同控制缘挑。

CancelInvoke ("createBullet");

分數(shù)顯示:
  分數(shù)顯示需要一個全局變量,那在 Unity 中桶略,就使用一個單例來充當全局的作用语淘。創(chuàng)建一個 GameManager 類來記錄一些全局的信息,讓其擁有一個 static 實例化际歼,統(tǒng)計分數(shù)時都調(diào)用該實例的成員函數(shù) addSorce 惶翻。
  添加一個 GUI text 控件,用于顯示分數(shù)鹅心。

游戲暫停:
  游戲暫停其實很簡單吕粗,在Unity中我們是可以控制“時間流速”的,利用 Time.timeScale 可以控制時間流逝速度比例旭愧,當我們將其設(shè)置為 0 時颅筋,就相當于時間靜止。

        Time.timeScale = 0; //時間靜止
        Time.timeScale = 1; //正常速度
        //在 0~1之間就可以實現(xiàn)慢動作的特效
        //大于1可以實現(xiàn)加速效果

炸彈效果:
  炸彈效果為按下 Space 鍵時敵機全部死亡输枯,在 enemy 與 gameManager 中同時檢測是否按下 Space 鍵以及是否有炸彈议泵。在 enemy 中銷毀敵機,在gameManager 中減少炸彈數(shù)量桃熄,但是要設(shè)置腳本的先后順序先口,否則數(shù)量先減少了,敵機并不會被摧毀蜻拨。
設(shè)置腳本順序:
  選擇一個腳本 -> Exrcution Order -> 設(shè)置Default Time

5.游戲結(jié)束

游戲結(jié)束時主要有幾個點池充,顯示當前分數(shù)、顯示歷史最高分缎讼,實現(xiàn)重新開始收夸、實現(xiàn)結(jié)束游戲。

顯示歷史分數(shù):

float highScore = PlayerPrefs.GetFloat("highScore",0);  
        if (score > highScore) {
            highScore = score;
        }
        PlayerPrefs.SetFloat ("highScore",highScore);
//需要存儲在本地 
//PlayerPrefs.GetFloat() 和 PlayerPrefs.SetFloat() 方法用于存儲

重新開始:

SceneManager.LoadScene (0);//當前只有一個scene血崭,所以直接載入0
//Application.LoadLevel (0); 在unity 5.3 中無法使用此方法卧惜。

結(jié)束游戲:

    Application.Quit();

5.補充

在 GameManeger 中記錄一個時間,敵機速度隨著游戲時長而增加夹纫。亦可以利用此時間來增加敵機數(shù)量或者敵機血量咽瓷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市舰讹,隨后出現(xiàn)的幾起案子茅姜,更是在濱河造成了極大的恐慌,老刑警劉巖月匣,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钻洒,死亡現(xiàn)場離奇詭異奋姿,居然都是意外死亡,警方通過查閱死者的電腦和手機素标,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門称诗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人头遭,你說我怎么就攤上這事寓免。” “怎么了计维?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵袜香,是天一觀的道長。 經(jīng)常有香客問我享潜,道長困鸥,這世上最難降的妖魔是什么嗅蔬? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任剑按,我火速辦了婚禮,結(jié)果婚禮上澜术,老公的妹妹穿的比我還像新娘艺蝴。我一直安慰自己,他們只是感情好鸟废,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布猜敢。 她就那樣靜靜地躺著,像睡著了一般盒延。 火紅的嫁衣襯著肌膚如雪缩擂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天添寺,我揣著相機與錄音胯盯,去河邊找鬼。 笑死计露,一個胖子當著我的面吹牛博脑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播票罐,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼叉趣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了该押?” 一聲冷哼從身側(cè)響起疗杉,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蚕礼,沒想到半個月后烟具,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體椭蹄,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年净赴,在試婚紗的時候發(fā)現(xiàn)自己被綠了绳矩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡玖翅,死狀恐怖翼馆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情金度,我是刑警寧澤应媚,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站猜极,受9級特大地震影響中姜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜跟伏,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一丢胚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧受扳,春花似錦携龟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至华望,卻和暖如春蕊蝗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赖舟。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工蓬戚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人建蹄。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓碌更,卻偏偏與公主長得像,于是被迫代替她去往敵國和親洞慎。 傳聞我的和親對象是個殘疾皇子痛单,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容