從零開始23天完成一款A(yù)ndroid游戲開發(fā)(三)
【Part3 – 第 6 至第 8 天】
第 6 天:第一批外星人和屏幕方向
好了,現(xiàn)在有了一些復(fù)古風(fēng)格的外星人它們正在到處飛。抱歉,暫時(shí)還沒有 demo。這款 Andriod 游戲目前只有 .apk 格式的安裝包。想必你不大可能安裝一個(gè)陌生人發(fā)給你的安裝包??偟膩碚f,目前背景和星星已經(jīng)可以載入而且還會慢慢移動(dòng)。為了讓星星滾動(dòng)我在星星圖案上調(diào)用 了 setV ()和 setV2()函數(shù),并逐個(gè)增加計(jì)時(shí)器的值。像這樣:
- scrollTimer -= delta*0.014;if (scrollTimer < 0.0f) scrollTimer = 1.0f;sStars.setV (scrollTimer);sStars.setV2(scrollTimer+1);
然后出現(xiàn)了一些外星人,它們會向右移動(dòng)。這就是這款游戲目前所有的功能。我仍然在學(xué) libGDX,因此會花大量時(shí)間 Google、閱讀手冊或是看視頻。
小貼士:我注意到一些借助 libGDX 開發(fā)的游戲通常會固定屏幕方向。在翻轉(zhuǎn)設(shè)備時(shí)游戲界面不會轉(zhuǎn)動(dòng)。我在 SO(StackOverflow)的一些缺頭少尾的跟帖和評論中找到了一個(gè)簡單的解決辦法:只要將 AndriodManifest.xml 文件中的 landscape 用 sensorLandscape 替換就可以讓屏幕隨著設(shè)備一起自動(dòng)翻轉(zhuǎn)。
第 7 天:改變布局和屏幕方向
現(xiàn)在可以射擊外星人了。由于是復(fù)古風(fēng)格的圖形,我決定在外星人爆炸時(shí)采用大像素(在 Gimp 里使用無差方式將外星人圖片放大 5 倍)。然后寫了一點(diǎn)碎片管理代碼,在 libGDX 從中央向其它方向隨機(jī)發(fā)射碎片時(shí)進(jìn)行中間計(jì)算。
也許你注意到屏幕上沒有圖形表示你自己。這是有意為之的。如果你沒有意識到這一點(diǎn)也沒關(guān)系,因?yàn)檫@是第一人稱射擊游戲。搞笑吧!嘿嘿,至少從技術(shù)上來說是這 樣的。你不必知道你在哪兒,只要射擊敵人就好。在一些測試版本中,我也嘗試了對外星人做一些尺度上的變換以增加縱深感,讓你感覺它們從遠(yuǎn)處過來。但在安卓 設(shè)備上用手指是很難射擊那些很小的東西的,所以我放棄了這個(gè)想法。
為了讓這個(gè)游戲更加有趣,射擊外星人用的激光槍需要不斷補(bǔ)充能量。每把可以射擊 10 次,然后需要點(diǎn)擊屏幕左下角的能量按鈕。我現(xiàn)在還不確定它的特性——因?yàn)檫€需要測試。
當(dāng)我在測試這個(gè)功能的時(shí)候有件事讓我很頭疼:當(dāng)射擊外星人的時(shí)候我的食指會滿屏幕點(diǎn),很難看清屏幕上發(fā)生了什么。然后我看了一些自己手機(jī)上各種安卓游戲,意 識到如果屏幕方向是縱向的效果會更好。在縱向模式下,食指不是從屏幕下方而是從右邊過來的(當(dāng)然你需要習(xí)慣使用右手)。在這種模式下,屏幕的大部分區(qū)域還 是可見的。我還改變了外星人飛行的方向,外星人會從屏幕上方出現(xiàn)而不是之前的從左向右出現(xiàn)。
同樣基于這個(gè)原因,我還改變了游戲的主要設(shè)計(jì)。你可以一直玩到讓一個(gè)外星人越過你,而不是之前的只能在固定時(shí)間內(nèi)玩。起初我的想法是你可以每次玩一分鐘, 在這一分鐘內(nèi)你要盡量多得分(類似于水果忍者的加分規(guī)則)?,F(xiàn)在我的想法是,雖然你可以有 3 條命,然而一旦你讓外星人越過了你游戲就到此結(jié)束。
后來我還修改了背景星云圖。之前我寫過怎么用 Gimp 畫帶有星星的夜空和星云圖,但是每次不得不為了滿意的效果而做很多實(shí)驗(yàn)。可以通過對兩個(gè)圖層做減法并增加一些固有噪聲,然后鍍上一層漸變顏色以達(dá)到效果。 問題是當(dāng)對兩個(gè)圖層做減法的時(shí)候總會產(chǎn)生一些“小”星云圖,而我想要的是整個(gè)屏幕都充滿色彩。我用畫筆隨機(jī)地在畫紙上點(diǎn)一些點(diǎn),然后著上不同顏色。我把星 星分成 3 個(gè)圖層:第一個(gè)圖層,給每個(gè)點(diǎn)加上一個(gè)兩像素的陰影(沒有補(bǔ)償),第二個(gè)圖層進(jìn)行模糊化,第三個(gè)圖層讓它保持原樣。這個(gè)技巧可以畫出很好的星星效果,奧秘 在于保證相近的點(diǎn)有不同顏色或不同的清晰度。而這也正是真正星空所具有的特點(diǎn)??雌饋硐嘟男切瞧鋵?shí)相距N光年之遙,只是從地球上看起來他們比較接近而 已。
第 8 天:星空之戰(zhàn)
我在試著給這個(gè)游戲起個(gè)新名字。雖然想了一個(gè)“星空之戰(zhàn)”,但是是否合適感覺仍然有待研究。我嘗試了一些字體,后來決定使用一種叫做 Ruslan Display 的字體。
今天我改進(jìn)了外星人爆炸效果的算法。我一直在思考怎么讓敵人看起來有一波一波的進(jìn)攻。先有 10 波敵人,緊接著 boss 出場。通過一關(guān)以后游戲會有些加速,還會加入一些新的敵人。在每 10 級里(10,20,30…)都會有一個(gè)新的 boss。這個(gè)算法會一直重復(fù)執(zhí)行,直到游戲者輸?shù)魹橹?。如果發(fā)現(xiàn)你想消滅所有外星人,游戲的速度會被設(shè)置為開始速度的兩倍這樣你需要付出很多的努力。
下面是現(xiàn)在對能量提升的設(shè)想:
有時(shí)限的能量提升,可以在游戲過程中收集到:
- 盾牌(在屏幕的底部,防止一個(gè)外星人通過)
- 分?jǐn)?shù)倍乘提升器
- 快速火力(只需手指持續(xù)按下然后到處移動(dòng))
- 大炸彈(毀滅掉所有屏幕上的外星人)
- 超能力(跳過十波敵人,但是獲得所有分?jǐn)?shù))
- 銀河忍者(用絕地武士之劍腰斬?cái)橙?mdash;—水果忍者的風(fēng)格)
- 自動(dòng)補(bǔ)充能量(自動(dòng)為激光槍補(bǔ)充能量)
- 多火力(同時(shí)有 3 或 4 個(gè)激光槍開火)
- 多生命(啟動(dòng)游戲時(shí)有 4 條命)
永久性的能量提升,可以在每次玩的時(shí)候不斷升級:
- 快速火力
- 盾牌
- 銀河忍者
- 自動(dòng)補(bǔ)充能量
相關(guān):
從零開始23天完成一款A(yù)ndroid游戲開發(fā)(一)
從零開始23天完成一款A(yù)ndroid游戲開發(fā)(二)
從零開始23天完成一款A(yù)ndroid游戲開發(fā)(四)
從零開始23天完成一款A(yù)ndroid游戲開發(fā)(五)
從零開始23天完成一款A(yù)ndroid游戲開發(fā)(六)
從零開始23天完成一款A(yù)ndroid游戲開發(fā)(七)
從零開始23天完成一款A(yù)ndroid游戲開發(fā)(八)
翻譯:bigosaur ImportNew.com