做完後的效果如下:
遊戲當中一按f就可以扔手雷,一炸一大片,很好用,看似簡單的手雷實則不算簡單,還需要考慮怎麼樣拋出才更有真實的效果。
要注意按f的時候,必須加個控制到底是否是本體,小編在實現的過程中就把這點給忽略了,導致快速按f克隆出很多的手雷,有的手雷克隆體沒有刪除掉,最後達到scratch克隆數量上限,再也克隆不出來了。
手雷扔出的時候我們設置一個面向滑鼠指針的運動速度,假設為10,那麼水平運動速度為sin(方向)*10,垂直運動速度為cos(方向)*10,用到了初中的三角函數。同時手雷不管在空中還是在地上,都要和平臺的運動同步,所以看到在這裡面手雷的X位移中有相應的同步代碼。還沒有實現手雷落地反彈的效果,感興趣的同學可以自己想辦法實現。
手雷往外扔的時候自己有一個速度,平臺的運動也會疊加到手雷的速度上。
手雷的X坐標=手雷拋出時X坐標+手雷水平運動速度 +(此刻平臺X-上一刻平臺X)
手雷落地後手雷的水平運動速度清零。
同時要考慮下落,在地上和爆炸的效果,以及碰到邊緣要隱藏,手雷的代碼真是不簡單。
做完後的效果如下,手雷炸不死主角,要的就是這個效果:
在遊戲當中,我們看到每一關的敵人都不一樣,有時候有2個殭屍,有時候6,7個,有時候還有幾個忍者。這個是怎麼做到呢?
最簡單的方式是通過一個列表來實現,每一項代表每一關的敵人數量,每一項數字的第一個數代表殭屍數量,第二個數代表忍者數量。
關卡設置的代碼我放在了Level這個角色裡:
最主要的產生敵人和掉落裝備的代碼如下:
其他代碼,最主要的是每一關開場時動畫效果展示:
遊戲效果在下方撿槍部分可見
這部分分成三個角色,一個是顯示在舞臺頂部的標籤,一個是從空中掉落的槍,還有換槍的手臂。
頂部標籤的代碼:
掉落槍的代碼,讓槍隨機位置出現,根據平臺移動,如果主角撿到槍,給主角的裝備裡增加槍和子彈。
持槍手臂的相關代碼,此處增加了一個列表「持有的所有兵器」,列表中存儲的是槍械編號(前兩位)和子彈數量(後三位),按空格換取槍械並獲取子彈:
做完後的效果如下:
敵人角色裡增加了受傷死亡相關的代碼(注意下圖中的血量是私有變量):
做完後效果如下:
到此為止,火柴人的所有代碼均已完成,除了換槍械的射擊效果,攻擊力等的設置,實在是不想花時間做了... 感興趣的同學加油,相信自己!
近期推文
教你做火柴人槍戰遊戲-運動篇
教你做火柴人槍戰遊戲-射擊篇
教你做火柴人槍戰遊戲-反擊篇
大家可以到碼小愛公眾號回復「火柴人2」,可以得到劉老師寫得代碼,更容易理解。寫此文耗了好幾個早晨,需要把遊戲全部實現,大多數bug全部消除才敢成文,覺得有用的同學就點個在看,後面寫更多有用的內容,謝謝!