Enemy bullets

  當玩家子彈卡關卡完了之後,就馬上遇到了敵人子彈卡關。

  為什麼當兩台一樣跑Loop發射環狀彈的敵人一同出現在畫面上就會有問題,要嘛就是發呆,要嘛就是一台發射完後才會接續發射,原本以為會不會是執行程序的問題,需要等一台執行完才會執行另一台,可是想想應該沒這麼鳥,也開始慢慢找問題到底出在哪邊,而除錯的過程其實也很花時間,一小部分一小部分的改,再看是否有修正。

  後來是直接新開一個檔案,做一個單純只有這個部份的程式,可能也是因為裡面的東西少比較容易找到問題在哪,所以這個問題解決的還算快,我想應該是跟邏輯上的判斷有關。

  這跟內部的For each架構如何使用應該很重要,不過也許我使用的也不太正確,反正能達到目的也沒出問題就好。當我把For each執行放在前面,接著才檢查開槍射擊的變數是否為真,那只要第一台或其中一台先符合規則便執行整個射擊的程序,當這台射擊完才會再檢查是否有下一台需開槍射擊,這也就造成我目前遇到的狀況,也就是若兩台在畫面中的時候,同一時間只會有一台發射子彈,而也要等到這台發射完,另外一台才會開始射擊。


  因此,如果我先做檢查射擊的變數,再用For each去執行射擊的程序,這樣就可以兩台以上的敵機同時射擊了。雖然這個也不是什麼很重要的部分,也不是說常常會有很多敵人同一時間停留在畫面中,也不太容易注意到,或者說注意到了也可能會以為是系統設計。只是無意中發現了這個問題就不是很舒服,還是打算先能修正就先修正,不然到時候要用到這個功能的話就囧了。

  接著修改了原先的機制,現在一個敵人可以同時間發射兩種以上的子彈,這個可能也不會常常用到,但是這可以讓敵人攻擊不會太呆板,並且同時有兩三種子彈混合的話也比較不會這麼容易預測安全地帶。

  後續比較需要思考的就是如何安排子彈的組合,要做出有難度,但同時也要讓玩家絕對可以閃得過的組合,還需要很多的調整;目前光是調整不同難度下子彈的數目、速度、間距就覺得有些花時間了,而且目前敵人子彈種類才兩種,不難想像未來敵人子彈種類多了以後,這個調整會有多麻煩。

  現在有點考慮要不要改變遊戲的解析度到1280x720,因為突然覺得800x600有些窄,如果要放Boss好像也沒辦法放很大隻,不然就是要把玩家飛機、敵人飛機等等整體比例縮小,或者是說進入Boss戰後改變畫面比例也是一個方法,可能需要早點決定,不然之後東西一多要改就麻煩了。