一個人做游戲(三)——失敗功能&聊聊一種手游的設(shè)計構(gòu)思
上次留了2個坑:
1. 失敗的功能怎么實現(xiàn)(其實都是用之前教的辦法復(fù)制粘貼就可以實現(xiàn)哦)
2. 【策劃篇】如何讓游戲變得更有趣
所以今天我們會寫寫程序聊聊策劃。

首先我們修改了一下UI,因為之前疏忽了一個問題,右邊的Z我們暫定為暫停按鈕,之后我會換圖。

那么接下來UP要來寫死掉的過程了,我們修改ballFly文件,就是曾經(jīng)我們寫來讓氣球上升的那個文件。
我們計算了下,讓氣球的坐標(biāo)大于這個時算失敗,也就是整個都在屏幕外面

其程序?qū)崿F(xiàn)方法就是,如果氣球>坐標(biāo) => HP扣1點 刪掉氣球
說罷開寫代碼
首先在config里定義新的變量
public static int hp; //玩家血量
然后再在ballFly增加代碼
if (transform.position.y >= 7)
{
gameConfig.hp -= 1;
Destroy(gameObject);
}
其實就是復(fù)制粘貼啦,順帶UP一提你們知道為什么很多程序員說上班就是搬磚嗎,因為沒有任何技術(shù)含量,就是把那幾個知識翻來覆去的復(fù)制粘貼修改,所以其實做游戲程序挺簡單的。
測試一下,我們在扣血的地方設(shè)置了 print(gameConfig.hp);來看結(jié)果

左下角顯示出了-1,-2,-3....看來功能是成功了,不過這個HP血量肯定是不正確的,所以
public static int hp = 3 我們把gameConfig里的東西這樣改下。
此時大家可能會提出疑問,UI里的HP并沒有減少呢,是啊,要記得其實這屬于一種前后端交互,實際上程序認(rèn)的是HP是幾這個數(shù)字,而UI的顯示只是把程序數(shù)字翻譯成了圖像讓你知道而已。
所以別急,一步步的腳踏實地。
然后我們加了一層UI,用于HP為0時的提示

然后我先實現(xiàn)失敗的提示,首先在生成氣球的地方加入了雙重判斷
if(條件 && 條件) 意思是 要同時滿足2個條件才執(zhí)行,這里意思就是如果HP為0了,就不出氣球了

另外要做一件事是,失敗后肯定還有一些氣球在飛,所以我們需要讓點擊氣球不加分了,再死掉HP也不扣了,否則肯定會出BUG
if(gameConfig.hp > 0)
gameConfig.scores += 1;
if(gameConfig.hp > 0)
gameConfig.hp -= 1;
接下來我們準(zhǔn)備隱藏掉失敗的UI,其實實現(xiàn)方式還是很偷懶,不顯示的時候我們將UI移動到坐標(biāo)9999的地方,要顯示的時候就移動回來
移動UI的代碼要這樣寫,而且必須這樣寫哦,不能像物件那樣用pointsion,否則要報錯
gameoverUI.GetComponent<RectTransform>().anchoredPosition = new Vector2(9999, 9999);

上圖中,為什么我將gameOverMode單獨寫了出來,其實這種形式叫寫一種方法,在面向?qū)ο蟮木幊讨?,最好多這樣用,在修改代碼的時候可以一眼知道是否寫錯了,方便模塊化修改
好的我們來測試下,你會明顯的發(fā)現(xiàn)失敗后就沒有氣球了

接下來我們實現(xiàn)“再來”這個按鈕
按鈕行為可以用一段現(xiàn)成的代碼

這個知識在曾經(jīng)的教程中講過,所以就不重復(fù)了,如果想回顧一下,請看這里
UP就不再解釋每一句代碼的意思了,其實上面的所有知識都在教程里說過了

好了,終于到了最后一步,將HP的心顯示在UI里
其實很簡單,首先來個這個

然后拖入圖中的HP

然后使用一個代碼叫做替換圖片

然后測試

好了現(xiàn)在整個游戲都做完了,但是有個問題,大家會發(fā)現(xiàn)如果游戲一直這樣玩你會覺得很無聊,所以我們做一個加速系統(tǒng)增加游戲難度
大家還記得之前UP寫的每隔幾秒做一件什么事的代碼嗎,就是氣球生成代碼

同樣的,我們把氣球產(chǎn)生頻率也進(jìn)行難度遞增調(diào)節(jié),總之達(dá)到的目的就是氣球越來越快,出現(xiàn)頻率越來越高,具體的算法UP也是一點點調(diào)出來的,其實這個屬于數(shù)值策劃的工作了。


好了,現(xiàn)在我們已經(jīng)做了一個可以玩的“游戲”了

所以接下來我們來談一談關(guān)于這種游戲的制作方向
其實如果是10年前,你們應(yīng)該可以在各種小游戲網(wǎng)站看到許多類似的游戲,甚至在手游發(fā)展的初期也有許多這種類似的游戲,在那個開發(fā)者稀有的年代,這種游戲還算比較受歡迎的。
但是隨著時代的變遷,現(xiàn)在的玩家們都喜歡氪金小姐姐了,雖然這種益智類游戲還是有一些用戶,不過更多的都是為了打發(fā)時間,而且他們也不愿意玩這種太純粹的打發(fā)時間游戲。
說直白點還是玩家變了。
所以如果UP現(xiàn)在上架一款上面寫的那種游戲的話,現(xiàn)在的結(jié)果只會是即使有人玩,也是1分鐘刪掉游戲,因為沒有什么“目標(biāo)”,況且在現(xiàn)在游戲眾多的時代,制作游戲如果不靠廣告不靠推廣已經(jīng)沒有人會看一眼了。
所以總的來說,首先畫面還要更干凈更現(xiàn)代一點,因為現(xiàn)在就是這么現(xiàn)實,靈魂再有趣不如一個好看的皮囊,就像你們都喜歡萌妹子一個道理,即使那個妹子性格很差,但是很多人都會因為妹子很好看而接受,所以UP決定在游戲完成的最后上線前統(tǒng)一換皮增加藝術(shù)感,可能是找朋友也可能是找有償美術(shù),讓其整體感更加國際化。
其次光是好看也不行的,如果游戲本身沒有目標(biāo)點,你只會隨便玩一玩就刪掉了,或許你可以說做些比分之類的玩法啊,就像當(dāng)年的神廟還有某鳥之類的游戲,玩法簡單不是也同樣火了么,是的,他們的成功是因為他們出生在那個年代,如果在2018年依然制作一款毫無目標(biāo)的有毒小游戲,多半結(jié)果是會被埋沒,因為這類游戲數(shù)量非常多,甚至別人每天刷廣告做推廣,你一個個人開發(fā)者能靠什么和商業(yè)公司競爭呢,要廣告你沒錢做不起,要推廣你就一個人,別人有人脈關(guān)系很廣的商務(wù)經(jīng)理等等等,要承認(rèn)拿工資的還是不要比。
說了一大堆廢話,所以要怎么增加耐玩度呢?
其實耐玩的核心就是要把游戲做的足夠復(fù)雜,給玩家一些期待,比如UP想到了這些點子
首先是氣球種類上的
炸彈氣球,點擊會損失血,正確方式是不管它
高分氣球,速度很快,放走也沒什么,只是點擊到會加大量分
來回漂浮氣球,不是直線上升的,而是來回漂浮的
血包,點擊后加1點血
當(dāng)然還不止這么多,UP想了一大堆點子....
然后是點擊上的
在屏幕上方繪制一條高分區(qū)域,氣球在高分區(qū)域中點擊會獲得翻倍得分,但是危險系數(shù)很高
炸彈氣球飛出屏幕后會掉落下一顆快速飛出屏幕的金幣,點擊可以獲得幣
點擊氣球有區(qū)域判定,普通區(qū)域1分,準(zhǔn)心3分,但是點準(zhǔn)心會很難的
當(dāng)然還有更多
然后是道具上的,允許玩家在游戲中使用一些道具
氣球暫停
限時保護(hù)模式
等等...
最后是收集上的,這樣可以消耗幣
抽取背景貼圖
抽取可更換BGM
等等...

上面寫了那么多,我相信看著這里你也一頭霧水了,這么復(fù)雜的游戲誰會玩啊,是的,這樣的游戲雖然系統(tǒng)復(fù)雜起來了,但是我都玩不懂,更不會玩了。
所以面對這樣的問題,UP決定為游戲再增加等級解鎖系統(tǒng),將部分玩法鎖住,待等級提升后一步步解鎖,然后逐個教學(xué),這樣就會更有游戲性啦。
好了,本期的專欄就到這里,游戲方面暫時還無法提供安裝版,因為這樣的“游戲”只能叫demo吧,如果各位小伙伴想玩UP開發(fā)的游戲,那么這里UP安利各位去玩玩我做的手游《囧之國》吧,作為獨立游戲作者只能借用各種機會宣傳自己的游戲了,在taptap或者appstore都可以搜索到,基本上是我和小伙伴2個人開發(fā)完成的游戲,所以回到上面的話題,獨立游戲作者沒有太多機會和資金做廣告,但是現(xiàn)在的游戲太多了,不做宣傳就真的會被埋沒,所以一定要抓住各種機會向別人安利安利安利安利自己的作品,學(xué)到了嗎。
那么下一期,我們會解決這些問題:
制作幾種新的氣球
那么下期再見咯。