11.結束遊戲
最終哈哈哈哈哈哈哈哈哈哈!
我們要制作一個遊戲結束的畫面,話說之前似乎在做那個Quaver的時候就做過這種簡單的UI。不過我們在這裡學習一下稍微厲害一點的動畫。
我們希望最後的GameOver界面是醬紫的:
首先是在我們的HUDCanvas底下新增一個一個Image叫做ScreenFader的Image,它的作用就是我們最後的那個藍色的承載物。我們把顔色調成這種青不叽叽的顔色,然後将透明度調成0。接下來繼續在HUDCanvas下添加一個Text的元件,輸入GameOver,同樣調整字型大小透明度。字型的話不要忘了加上Shadow的元件,這樣看上去會立體很多。
在接下來我們要調整一下HUDCanvas裡面的順序,在4.6版本以上的unity中,UI系統渲染的順序是根據Hierarchy裡面的順序決定的。靠前的會被渲染進最底層,最後的會被渲染在最上面(就像棧一樣)。是以我們将HealthUI放在最底層,因為其他的UI一開始都是透明的,我們隻需要最後渲染出來的時候把前面的覆寫掉就好了。以下是順序:
之後我們要讓這個結束的界面動起來。在Quaver中我使用的方法是将這個界面額外做成一個scene。這裡的話我們直接使用一個動畫。
值得一提的是,unity裡面的動畫可以将任何東西作為動畫改變的部分,而不僅僅是角色動畫。顔色,透明度,大小都可以作為圖形動畫的一部分作為展現。
我們標明HUDCanvas,同時在WIndow視窗中選擇Animation-Animation。開始添加動畫。點選視窗中左上角的小紅點。一旦按下這個按鈕,所有在該界面的操作都會被認為是動畫的一部分,即使你進行了撤銷,Animation也會認為是你故意安排好的。是以謹慎不要犯錯。
我們想使用動畫功能改變遊戲結束字型的大小,顔色(透明度),背景的顔色(透明度),以及分數版字型的大小。是以在Add Property中添加以下元件:
接下來,我們将結束的關鍵幀移動到30幀左右的位置,這樣動畫不至于太長。接着,我們希望Game Over的字型突然變大然後縮小,就好像彈了一下。我們在20幀的地方增加一個GameOverText:Scale的關鍵幀。将0幀處的sacle設定為0,0,0(這些數字代表的是放大縮小的比例),将20幀處設定為1.2,将30幀結束處設定為1。同樣的,将30幀處ScoreText:Scale設定為0.8。兩個的顔色在30幀處将透明度設為1。unity會自動加上補間動畫。
最後,全選所有的關鍵幀,後移至90幀左右的位置。我們不希望玩家一死就播放結束畫面。最後,我們關閉小紅點。
設定完這些之後,我們看到Inspector裡面,unity自動幫我們補齊了Animator的元件,我們将它補好的HUDController打開。現在的問題是,系統自動進來得到的動畫就是遊戲結束,我們不希望是他,是以右鍵建立一個Empty State。設定為Defalut,将增加一個Transition,增加一個trigger類型的parameter叫GameOver。
最後我們将GameOverManager的腳本增加的HUDCanvas上。
using UnityEngine;
public class GameOverManager : MonoBehaviour
{
public PlayerHealth playerHealth;
Animator anim;
void Awake()
{
anim = GetComponent<Animator>();
}
void Update()
{
if (playerHealth.currentHealth <= 0)
{
anim.SetTrigger("GameOver");
}
}
}
很簡單,不用怎麼解釋。
因為我們調用了PlayerHealth,是以在Inspector裡面,我們将Player拖進去。
And last,我們回到第一步的Environment,找到BackgroundMusic,設定為Play on Awake。儲存。
Ladies and Gentleman,Survival Shooter is done. Go and kill some Zombies.