天天看點

unity——Survival Shooter:Game Over,Man!

11.結束遊戲

最終哈哈哈哈哈哈哈哈哈哈!

我們要制作一個遊戲結束的畫面,話說之前似乎在做那個Quaver的時候就做過這種簡單的UI。不過我們在這裡學習一下稍微厲害一點的動畫。

我們希望最後的GameOver界面是醬紫的:

unity——Survival Shooter:Game Over,Man!

首先是在我們的HUDCanvas底下新增一個一個Image叫做ScreenFader的Image,它的作用就是我們最後的那個藍色的承載物。我們把顔色調成這種青不叽叽的顔色,然後将透明度調成0。接下來繼續在HUDCanvas下添加一個Text的元件,輸入GameOver,同樣調整字型大小透明度。字型的話不要忘了加上Shadow的元件,這樣看上去會立體很多。

在接下來我們要調整一下HUDCanvas裡面的順序,在4.6版本以上的unity中,UI系統渲染的順序是根據Hierarchy裡面的順序決定的。靠前的會被渲染進最底層,最後的會被渲染在最上面(就像棧一樣)。是以我們将HealthUI放在最底層,因為其他的UI一開始都是透明的,我們隻需要最後渲染出來的時候把前面的覆寫掉就好了。以下是順序:

unity——Survival Shooter:Game Over,Man!

之後我們要讓這個結束的界面動起來。在Quaver中我使用的方法是将這個界面額外做成一個scene。這裡的話我們直接使用一個動畫。

值得一提的是,unity裡面的動畫可以将任何東西作為動畫改變的部分,而不僅僅是角色動畫。顔色,透明度,大小都可以作為圖形動畫的一部分作為展現。

我們標明HUDCanvas,同時在WIndow視窗中選擇Animation-Animation。開始添加動畫。點選視窗中左上角的小紅點。一旦按下這個按鈕,所有在該界面的操作都會被認為是動畫的一部分,即使你進行了撤銷,Animation也會認為是你故意安排好的。是以謹慎不要犯錯。

我們想使用動畫功能改變遊戲結束字型的大小,顔色(透明度),背景的顔色(透明度),以及分數版字型的大小。是以在Add Property中添加以下元件:

unity——Survival Shooter:Game Over,Man!

接下來,我們将結束的關鍵幀移動到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.