第六天鼓搗FlappyBird了,收尾一下暫告一段落吧
1.今天把重寫完成了,果然是各種坑,包括重命名各處的類,引用的腳本修改,甚至有一些Prefab都得復(fù)制出來一份單獨(dú)處理。方法知道了,純堆工作量處理起來還比較快。運(yùn)行起來除了一些已知的Bug,倒也沒有引入新Bug。然而有些令人沮喪的是,我們一個(gè)開發(fā)經(jīng)過看到了正在做的Demo,并不覺得新加的兩個(gè)模式特別有意思??赡芤彩俏覍ψ约旱某晒挠枇颂叩南M?/p>
2.昨晚想的新增道具,從策劃的角度來說挺容易的功能,自己開發(fā)的時(shí)候才發(fā)現(xiàn)并不簡單。舉例來說沖刺,策劃的角度大致這樣描述:
? ? 1)吃到?jīng)_刺道具后,馬上開始以更高速度向前飛行,持續(xù)N秒
? ? 2)沖刺期間不受控制,也無視障礙可以直接穿過
? ? 3)沖刺結(jié)束后立即可以控制,但會有短暫的時(shí)間無敵,不會直接撞死
開發(fā)的角度:
? ? 1)吃到道具好說,碰撞觸發(fā)某個(gè)函數(shù)就行了,這個(gè)最后再寫。首先是沖刺怎么表現(xiàn)。實(shí)際上鳥是不會向前移動,只會上下移動的,是地圖和障礙在相對地向后運(yùn)動。于是沖刺期間背景和障礙移動速度提高兩倍,不過單純這樣效果并不好,還要配合鳥的位置比平常更靠前一些,營造出更有速度的感覺。逐漸加速到靠前位置的函數(shù)太難寫了,簡化一下,一旦開始沖刺,將所有鳥的位置比平常右移2個(gè)身位。雖然生硬,好歹是更有表現(xiàn)力一些了
? ? 2)不受控制好說,在Update函數(shù)中增加一個(gè)isRush的判斷,為True的時(shí)候跳過點(diǎn)擊檢測就好了。無視障礙好說,把鳥上面的PolygonCollider移除就不會撞到了
? ? 3)其實(shí)是邊做邊想到的優(yōu)化,還沒來得及做
因?yàn)樯婕暗綍r(shí)間控制,還需要使用協(xié)程來寫沖刺的方法,鼓搗了半天寫完了,結(jié)果測出了一堆Bug
首先是發(fā)現(xiàn)鳥直愣愣的掉下去了,原來是沖刺期間還受到重力的影響,好說,把沖刺期間的重力移除。
然后發(fā)現(xiàn)有時(shí)候玩著玩著會報(bào)錯(cuò),提示找不到PolygonCollider組件卻嘗試移除。原來是之前寫鳥死亡的方法的時(shí)候,圖方便把死掉的鳥的這個(gè)組件直接移除了,假如這時(shí)候再開始沖刺,就會找不到組件。于是在移除組件的時(shí)候加了個(gè)組件不能為null的判斷
再就是有時(shí)候剛撞死一只鳥,開始沖刺,發(fā)現(xiàn)死了的鳥也跟著沖了起來- -|||總算是能夠理解開發(fā)寫出各種奇異的Bug時(shí)候的心情了
有時(shí)候Bug和需求本身的大小并沒有太大的關(guān)系,一方面是策劃對于各種邊緣情況的考慮,另一方面是開發(fā)對于更邊緣情況的考慮,以及對于需求本身的理解
水平有限,這個(gè)Demo就到此為止吧,還是老老實(shí)實(shí)學(xué)課程去!
雙十一快樂
2018.11.11 1:34