憤怒的小鳥判斷場景中道具被小鳥擊中後的改變以及小鳥碰撞玩物體後的受傷狀態以及使用靜態方法對聲音的新增

weixin_51002263發表於2020-12-03

在這裡插入圖片描述
首先要了解當小鳥與非小鳥發生碰撞時是因為力的存在,所以當小鳥碰撞到非小鳥物體時兩者都會產生相應的速度,所以便可通過相對速度來檢測其碰撞後的狀態。
一:
因此,我們可以定義兩個速度,一個為最小速度minSpeed,另一個為最大速度maxSpeed,我們可讓當最小速度minSpeed<豬被小鳥碰撞的速度<最大速度maxSpeed,小豬此時的狀態為受傷。當豬被小鳥碰撞的速度>最大速度maxSpeed,此時豬直接死亡。
二:程式碼如下
1.定義兩個速度
在這裡插入圖片描述
2.使用碰撞檢測,來完成對此時速度的判斷
在這裡插入圖片描述
3.Dead方法的實現
在這裡插入圖片描述
Dead方法中的Score方法為當小豬被小鳥碰撞後死亡時會有分數呈現

其中的boom,為當小豬死亡後呈現的動畫由圖片構成
在這裡插入圖片描述

在這裡插入圖片描述
程式碼:
在這裡插入圖片描述
因為分數要在豬的上方呈現,所以要將豬當前的位置加上適當的y值讓分數呈現在豬的上方,不過在實現小先定義。

在這裡插入圖片描述

二:小鳥受傷狀態的實現以及非小鳥的受傷狀態實現
在這裡插入圖片描述
可以看見的發射黑色小鳥後小豬的狀態以及發生了改變,這個操作我們可以通過SpriteRenderer元件來完成。
1.小豬受傷後的狀態改變

在這裡插入圖片描述
hurt為受傷後的圖片

在Awake()中呼叫
在這裡插入圖片描述
在private void OnCollisionEnter2D(Collision2D collision)碰撞檢測中實現,當此時的速度小於maxSpeed大於minSpeed時為受傷狀態,當速度大於maxSpeed小豬直接死亡,並生成boom動畫。

在這裡插入圖片描述
2.場景中木塊,玻璃等物品的受傷狀態改變

場景木塊等物體也會被小鳥碰撞後,也會有受傷狀態,其原理於小豬碰撞原理相類似,所以我們可以將小豬上的指令碼(pig)賦予場景中其他物體,即可完成其效果。但我們要區分這兩個物體(小豬和木頭等物體),所以我們要定義一個bool型別來區分是否為ispig。

在這裡插入圖片描述

在這裡插入圖片描述

通過此方法來完成對小鳥碰撞其他物體後的其他物體的受傷狀態改變。

三.小鳥受傷狀態的實現

與定義小豬受傷的方法相似
在這裡插入圖片描述
也是通過SpriteRenderer元件來實現,在Awake()中獲取
在這裡插入圖片描述
在bird類中定義Hurt()
在這裡插入圖片描述
然後在pig中通過將小鳥賦予Player的標籤來實現小鳥受傷,來呼叫bird類中的Hurt()方法。
在這裡插入圖片描述

四.運用靜態方法來完成對聲音的呼叫。

首先定義三個AudioClip型別,分別為小豬受傷時的音訊,一個小豬死亡時的音訊和小鳥發生碰撞時的音訊。

在這裡插入圖片描述
定義此靜態方法
在這裡插入圖片描述
然後在通過AudioPlay()方法來呼叫

在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述

相關文章