你肯定玩過《憤怒的小鳥》,這是一款人人都喜歡的小游戲,它沒有年齡、性別限制,游戲的故事也是相當有趣,玩家通過操作一個彈弓來將一些沒有翅膀的小鳥發送到對面,破壞一些構建物以及偷雞蛋的豬,不同的小鳥還有不同的特殊技能,終極目標就是在規定次數內打倒所有的豬,游戲中那種奇妙的感覺令人感到歡樂。在玩過游戲之后,不知道有沒有同學和我有一樣的想法,是否可以用Scratch模仿出《憤怒的小鳥》呢?今天小陳老師就和大家分享一下我是如何用Scratch模仿《憤怒的小鳥》游戲的。
《憤怒的小鳥》所需要的素材包已經上傳到百度網盤了,素材包中包含了紅鳥和豬豬的角色圖片、游戲的背景、積分、彈弓的部件和煙霧等。將所有素材導入Scratch角色庫,積分作為豬豬的第二個造型(圖1)。

將各角色擺放在規劃好的位置,初始狀態下,彈弓和小鳥在左邊,小鳥的圖層在“彈弓右”的上面一層、“彈弓左”最上層。豬豬擺放到舞臺右邊要與彈弓有一定的距離,以便游戲運行后小鳥可以發射出去。小陳老師為了方便演示只擺放了一只豬豬,大家學會方法后,可以以此類推(圖2)。

首先我們需要確定小鳥的位置,新建兩個變量“初始X坐標”和“初始Y坐標”代表著游戲開始后小鳥的默認位置,這個位置在彈弓中間。
然后我們要考慮游戲的運行過程,小鳥飛行路線是一條拋物線。由于小鳥是玩家控制的,隨著初始位置不同,角度和彈弓的拉伸長度與拋物線之間的關系很難用數學的公式完美表示出來。我們簡化了變量,只用兩個變量“X速度”和“Y速度”控制小鳥的飛行。
當我們準備發射小鳥時,按下鼠標拖住小鳥,向后拖動一段距離。這時“X速度”設置為小鳥“初始X坐標”減去小鳥當前位置的“X坐標”除以4。“Y速度”設置為小鳥“初始Y坐標”減去小鳥當前位置的“Y坐標”除以4。這里除4的目的是不讓小鳥飛得太快太遠,讓玩家難以擊中目標(圖3)。

以上部分便是小鳥發射前的場景,當松開鼠標后,在彈弓左邊小鳥速度增加,在彈弓右邊速度開始降低。為了表現飛行的軌跡是一條拋物線,當小鳥的X速度大于0后也就是釋放鼠標彈射出去后超過彈弓時,Y速度由原來的增加改成減小,這樣便會形成拋物線的效果(圖4)。

當飛出去的小鳥擊中豬豬時,廣播觸發“擊中豬豬”效果,豬豬由原來的造型變換成1000分。如果飛出去的小鳥碰到舞臺邊緣或者碰到地面后,自動消失,消失時我利用克隆加造型完成了一個煙霧的特效,看起來還是挺逼真的(圖5)。

講到這里不知道同學們有沒有忘記,我們漏了一個點,彈弓的皮筋在哪里呢?其實皮筋部分需要我們通過畫筆工具描繪出來,皮筋的拉升長度和小鳥的移動位置有直接關系,拉伸后的小鳥正好處于彈弓皮兜的中心位置,而皮筋的兩端起點就是小鳥默認初始位置的左右兩邊,也就是彈弓左右兩根棍子上。只要設置好畫筆的顏色和粗細,完成相應的代碼,不就完成了彈弓皮筋的效果了嗎(圖6)?

《憤怒的小鳥》確實是一款不錯的小游戲,趕緊拉上你的小伙伴一起把游戲做得更加豐富一點吧,加油!